IE7 javascript错误:未定义运行时错误microsoft jscript:dropdownlist

IE7 javascript error: runtime-error microsoft jscript: dropdownlist is not defined

本文关键字:microsoft jscript dropdownlist 运行时错误 未定义 javascript 错误 IE7      更新时间:2023-09-26

我有另一个由IE7引起的错误(很棒的程序…)我正在尝试将dropdownlist放入javascript函数中,以便使用它的值来隐藏一些以这些值命名的div。但每次我尝试使用这个下拉列表时,我都会收到以下错误:运行时错误microsoft-jscript:未定义dropdownlist

javascript:

<script src="/Scripts/ShowHide.js" type="text/javascript"></script>
function ShowHideDivByDropDownList(dropdownlist) {
  for (i = 0; i < dropdownlist.options.lenght; i++) {
      var divId = dropdownlist.options[i].value;
      if (divId != "") {
          document.getElementById(divId).style.display = "none";
      }
  }
  document.getElementById(drowdownlist.value).style.display = "block";
}

下拉列表:

@Html.DropDownList("MainList",
                    new SelectList(Model.ListCategories, 
                    Model.List,
                    new { onchange ="ShowHideDivByDropDownList(this)"})

编辑:

我做了一些调整,试图让剧本运行起来,很多人似乎注意到了这一点:)。我已经将脚本返回到原始状态,但错误仍然存在。

如果它是ID,请使用getElementById(id),如果它是名称,则使用getElementsByName(name)[0]

getElementByName不存在。

还要小心你的变量名。。。

for循环中,您有drowdownlish,而不是drowdownlist。为了保持理智,您可能想让那些下线

function ShowHideDivByDropDownList(dropdownlistid) {
  var dropdownlist= document.getElementByName(dropdownlistid);
  for (i = 0; i < dropdownlist.options.count; i++) {
      var divId = dropdownlist.options[i].value;
      if (divId != "") {
          document.getElementById(divId).style.display = "none";
      }
  }
  document.getElementById(dropdownlist.value).style.display = "block";
}

你可以避免所有这些混乱-正如这个答案正确地说的那样,你必须使用getElementById,但如果你把代码改成这样:

onchange ="ShowHideDivByDropDownList(this)"

然后你将实际对象传递给函数,然后你就可以安全地使用这样的代码:

function ShowHideDivByDropDownList(drowdownlist) {
    for (var i = 0; i < drowdownlist.options.length; i++) {
        var divId = drowdownlist.options[i].value;
        if (divId !== "") {
            var element = document.getElementById(divId);
            if (element)
                element.style.display = "none";
        }
    }
    var element = document.getElementById(drowdownlist.value);
    if (element)
        element.style.display = "block";
}

我一路上也解决了一些问题:

  1. 在JavaScript中,数组长度是.length,而不是.count
  2. 如果没有这样ID的元素,你的代码就会崩溃——为了避免这种意外,最好验证你是否真的有这样的元素——你可以添加alert("element does not exist");进行调试,但因为你有打字错误而导致整个代码崩溃并不是一件好事
相关文章: