Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的js函数在脚本标记内部工作,为什么不在外部javascript文件django表单中工作_Javascript_Django - Fatal编程技术网

为什么我的js函数在脚本标记内部工作,为什么不在外部javascript文件django表单中工作

为什么我的js函数在脚本标记内部工作,为什么不在外部javascript文件django表单中工作,javascript,django,Javascript,Django,在django中,我有一个表单,在选中组件时显示纯文本,如下所示 class CompanySearchForm(forms.Form): check = forms.BooleanField() def __init__(self, *args, **kwargs): super(CompanySearchForm, self).__init__(*args, **kwargs) self.fields['check'].widget.attr

在django中,我有一个表单,在选中组件时显示纯文本,如下所示

class CompanySearchForm(forms.Form):
    check = forms.BooleanField()

    def __init__(self, *args, **kwargs):
        super(CompanySearchForm, self).__init__(*args, **kwargs)
        self.fields['check'].widget.attrs.update({"onclick": 'show_p()', 'id': 'check'})
我还有一个js文件,它具有以下功能

function show_p() {
    var checkBox = document.getElementById("check");
    var texto = document.getElementById("text");
    if (checkBox.checked == true){
        texto.style.display = "block";
    } else {
        texto.style.display = "none";
    }
}
我的模板:

{% extends 'base.html' %}
{% load static %}
{% block extra_styles %}
    <script href="{% static 'js/ajax_ubigeo.js' %}"></script>
{% endblock %}
{% block content %}
    <form action="" method="post">
        {% csrf_token %}
        {{ form.check }}
    </form>
    <p id="text" style="display: none">hola</p>
{% endblock %}
{%extends'base.html%}
{%load static%}
{%block extra_styles%}
{%endblock%}
{%block content%}
{%csrf_令牌%}
{{form.check}
霍拉

{%endblock%}

我的问题是为什么show_p()脚本标记和模板内部工作。但是为什么不在外部java脚本文件中呢?

它不在同一块中。您没有在实际的基础模板中呈现脚本标记。将所有内容包装在同一块中,或将脚本添加到基本模板中。

替换:

<script href="{% static 'js/ajax_ubigeo.js' %}"></script>

与:


看看会发生什么。理由是:

href请求网页、表单处理程序、块等资源 引用引用页或样式表。在许多情况下(除了样式) 页)链接将打开一个新网页,从中单击“后退”按钮 我们应该回到上一页

src表示嵌入在当前文档中的资源, 例如,img、视频、音频或脚本。浏览器将分配 屏幕不动产取决于屏幕的物理尺寸 嵌入对象。href没有这样的规定

另外,确保文件存在于告诉static查看的位置

如果这不能解决问题,请发布base.html模板或确保存在额外的_样式块。呈现页面时,查看页面源代码时是否显示脚本块


参考:

请提供更具体的细节或示例。事实上,没有太多解释“将其包装在同一块中”分享一个示例。他在那里展示的是渲染-在一个基本模板中可以有多个块标记。你不需要把所有的东西都塞进一个街区。不,你不需要。我没那么说
<script src="{% static 'js/ajax_ubigeo.js' %}" type="text/javascript"></script>