0

下面的代码对我来说似乎没有正确执行,我很困惑为什么。 NonITView并且ITView都是我的 ASP 页面中的 div。 txtIsITasp:textbox在页面加载时获得“是”或“否”的页面上的一个。

        if (document.getElementById("<%= txtIsIT.ClientID %>").value = "yes") {
            $("#NonITView").hide("slow");
            $("#ITView").show("slow");
        }
        else if (document.getElementById("<%= txtIsIT.ClientID %>").value = "no") {
            $("#ITView").hide("slow");
            $("#NonITView").show("slow");
        }
        else {
            alert("Error");
        }

if正在正确评估。在 Firefox 的 Web 控制台中,通过输入 jquery .show/.hide 函数,可以正确显示/隐藏 div,这是让我感到困惑的一部分。有什么对你很重要的东西应该解决吗?

4

6 回答 6

1

=两条线上的错误,你让它们相等,你不检查它们。

document.getElementById("<%= txtIsIT.ClientID %>").value = "yes"

一个提示,为了避免这种错误,把它们写反,如

if( "yes" == document.getElementById("<%= txtIsIT.ClientID %>").value) {}

这样,如果不小心写=了它会抛出一个错误。

于 2012-10-10T13:59:06.177 回答
1

在 if 语句中,你正在做一个赋值。

document.getElementById("<%= txtIsIT.ClientID %>").value = "yes"

这将始终评估为真。所以将该行更改为:

if(document.getElementById("<%= txtIsIT.ClientID %>").value === "yes")

还要注意三个等号。现在,相等使用 === 是一种常见的做法。请参阅这篇文章了解原因:

JavaScript 中 == 和 === 的区别

于 2012-10-10T14:01:23.973 回答
1

你可以使用这样的东西......

  $(document).ready(function() {

     $('#Button_ID').click(function() {
        if ($("#<%= txtIsIT.ClientID %>").val() == "yes") {
            $("#NonITView").hide("slow");
            $("#ITView").show("slow");
        }
        else if ($("#<%= txtIsIT.ClientID %>").val() == "no") {
            $("#ITView").hide("slow");
            $("#NonITView").show("slow");
        }
        else {
            alert("Error");
        }
     });
});
于 2012-10-10T14:02:52.277 回答
0
(document.getElementById("<%= txtIsIT.ClientID %>").value = "yes")

应该

(document.getElementById("<%= txtIsIT.ClientID %>").value == "yes")

在 if 语句上应该是==

于 2012-10-10T14:00:24.663 回答
0

为什么要混合使用 jQuery 和常规 javascript。如果你打算使用 jQuery 坚持下去:

if ($("#<%= txtIsIT.ClientID %>").val() == "yes") {
  $("#NonITView").hide("slow");
  $("#ITView").show("slow");
}
else if ($("#<%= txtIsIT.ClientID %>").val() == "no") {
  $("#ITView").hide("slow");
  $("#NonITView").show("slow");
}
else {
  alert("Error");
}
于 2012-10-10T14:05:01.983 回答
0

发现了我的问题。当UpdatePanel重新加载时,它会将其内容的属性恢复为其默认状态,在这种情况下,这style="display:none"两个 div 都存在。代码将运行,显示适当的 div,然后立即再次隐藏它,因为稍后在函数中我告诉它UpdatePanel触发 的回发触发器。

谢谢大家的帮助!

于 2012-10-10T15:01:52.060 回答