gpt4 book ai didi

javascript - 未捕获的类型错误 : Cannot set property 'width' of undefined, javascript

转载 作者:行者123 更新时间:2023-12-03 12:12:57 25 4
gpt4 key购买 nike

首先,我尝试扩展下拉列表以适应与用户相关的搜索(例如:Billy Bob's Restaurant - 98765)(这是用经典 ASP 编写的):

Response.Write "<td id='aRow' onMouseOver=""resizeMenu(" & i-1 & ", " & numOpts & ")"" colspan=2 style='padding-left:5px;'>" & vbcrlf

然后我有一个抛出错误的函数:无法设置未定义的属性“宽度”。

这是这里的函数:

function resizeMenu(theOpt, numOpts) {

var i, thisOpt;
var toAdjust;

if (numOpts > 1 ) {
toAdjust = 60 / (numOpts - 1);
} else {
toAdjust = 0;
}

for (i=0; i < numOpts; i++) {
thisOpt = document.getElementById("anOpt" + (i+1));
if (i == theOpt) {
if (numOpts > 1) {
document.getElementById('aRow')[i].width = (optWidth + 60).toString() + "px";
thisOpt.style.width = (optWidth + 40).toString() + "px";
} else {
document.getElementById('aRow').width = (optWidth).toString() + "px";
thisOpt.style.width = (optWidth - 20).toString() + "px";
}
} else {
if (numOpts > 1) {
document.getElementById('aRow')[i].width = (optWidth - toAdjust).toString() + "px";
} else {
document.getElementById('aRow').width = (optWidth - toAdjust).toString() + "px";
}
thisOpt.style.width = (optWidth - toAdjust - 20).toString() + "px";
}

}

};

当我将鼠标悬停在下拉菜单上时,出现错误。我查看了代码,但无法弄清楚到底出了什么问题。

我还应该注意到,我继承了这段代码,而且我对 JavaScript 编程还相当陌生。该错误显示在 Chrome 的调试器中。在 Firefox 和 IE11 中,它不会显示在调试器中。如果我在 for 循环之前注释掉最后一个大括号下面的部分,则页面加载完成后脚本只会显示错误消息。

最佳答案

   document.getElementById('aRow')[i].width = (optWidth + 60).toString() + "px";

当页面上的多个元素使用 id 时,该代码期望 .getElementById() 返回一个 NodeList。浏览器曾经这样做,但据我所知,Firefox 和 Chrome 都没有这样做。

对多个元素使用相同的 id 与标识符的目的背道而驰。您可以通过将代码更改为

,让您的代码在支持 .querySelectorAll() 的浏览器中运行
   document.querySelectorAll('#aRow')[i] // ... whatever ...

哦,一般来说,像“无法[做某事]未定义的属性“某事””这样的错误意味着您有这样的代码

      x.something

但是x未定义;换句话说,代码的期望没有得到满足,因此它会因该错误而失败。因此,要追踪此类错误的来源,您只需在代码中查找在 . 之后或方括号内使用属性名称的位置即可。

关于javascript - 未捕获的类型错误 : Cannot set property 'width' of undefined, javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24875501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com