Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.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
为什么不执行此javascript_Javascript_C#_Asp.net Mvc_Razor - Fatal编程技术网

为什么不执行此javascript

为什么不执行此javascript,javascript,c#,asp.net-mvc,razor,Javascript,C#,Asp.net Mvc,Razor,我有一个文本框,我只想显示Model.SelectedSubProcessID的值是否为-2 <script> $(function () { $('#subProcessAdditionalDiv').hide(); }); </script> <div id="modifyForm" class="incidentBox" style="justify-content: flex-start !important; width:

我有一个文本框,我只想显示
Model.SelectedSubProcessID
的值是否为
-2

<script>
    $(function () {
        $('#subProcessAdditionalDiv').hide();
    });
</script>

<div id="modifyForm" class="incidentBox" style="justify-content: flex-start !important; width: auto !important; padding-left: 20px; text-align: left; align-items: flex-start !important;">

    ...

    if (Model.SelectedSubProcessID == -2)
    {
        <script type="text/javascript">
            $('#subProcessAdditionalDiv').show();
        </script>
    }

    ...

</div>
<br />

<div id="subProcessAdditionalDiv" style="display:flex; margin-bottom:10px">
    @Html.LabelFor(m => m.SelectedSubProcessName, new { style = "margin-top: 2px" })<span>&nbsp;&nbsp;</span>
    @Html.TextBoxFor(m => m.SelectedSubProcessName, new { style = "width:500px; margin-left: 120px" })<span>&nbsp</span>
    @Html.ValidationMessageFor(m => m.SelectedSubProcessName)
</div>

$(函数(){
$('#subProcessAdditionalDiv').hide();
});
...
if(Model.SelectedSubProcessID==-2)
{
$('#subProcessAdditionalDiv').show();
}
...

@LabelFor(m=>m.SelectedSubProcessName,新的{style=“margin top:2px”}) @Html.TextBoxFor(m=>m.SelectedSubProcessName,new{style=“width:500px;margin left:120px”}) @Html.ValidationMessageFor(m=>m.SelectedSubProcessName)

即使if语句为true,行
$('#subProcessAdditionalDiv').show()也是如此不执行,文本框保持隐藏,这是为什么?

您忘记像前面一样将语句包装到文档的就绪处理程序中:

$(function () {
    $('#subProcessAdditionalDiv').show();
});
由于不使用文档的ready处理程序,代码试图在浏览器解析文档时立即执行,并且目标元素还不存在,因为它位于文档的后面。因此,代码在您的示例中运行,jQuery选择器根本找不到任何要显示的匹配元素

请注意,将两个互斥语句放入文档的就绪处理程序中可能会起作用,但如果不能保证它们的执行顺序,那么仅将条件包装在其中一个语句周围是否更有意义?完全删除顶部的元素(调用
.hide()
),并在默认情况下设置隐藏元素的样式。然后对
.show()
的条件调用将在需要时显示元素。(或将其设置为默认显示,并取消条件以隐藏它。)

此外,您可能根本不需要为此使用JavaScript。只需将元素本身包装在条件中,当条件不满足时,它根本不会发送到客户端:

@if (Model.SelectedSubProcessID == -2)
    <div id="subProcessAdditionalDiv" style="display:flex; margin-bottom:10px">
        ...
    </div>
}
@if(Model.SelectedSubProcessID==-2)
...
}

您忘记将语句包装到文档的就绪处理程序中,就像您之前所做的那样:

$(function () {
    $('#subProcessAdditionalDiv').show();
});
由于不使用文档的ready处理程序,代码试图在浏览器解析文档时立即执行,并且目标元素还不存在,因为它位于文档的后面。因此,代码在您的示例中运行,jQuery选择器根本找不到任何要显示的匹配元素

请注意,将两个互斥语句放入文档的就绪处理程序中可能会起作用,但如果不能保证它们的执行顺序,那么仅将条件包装在其中一个语句周围是否更有意义?完全删除顶部的元素(调用
.hide()
),并在默认情况下设置隐藏元素的样式。然后对
.show()
的条件调用将在需要时显示元素。(或将其设置为默认显示,并取消条件以隐藏它。)

此外,您可能根本不需要为此使用JavaScript。只需将元素本身包装在条件中,当条件不满足时,它根本不会发送到客户端:

@if (Model.SelectedSubProcessID == -2)
    <div id="subProcessAdditionalDiv" style="display:flex; margin-bottom:10px">
        ...
    </div>
}
@if(Model.SelectedSubProcessID==-2)
...
}

是否提供一个示例?提供一个例子?JSFIDLE?就是这样,我之所以使用javascript,是因为我还希望框根据用户从下拉菜单中选择的内容隐藏/显示。我之所以使用javascript,是因为我还希望框根据用户从下拉菜单中选择的内容隐藏/显示