gpt4 book ai didi

javascript - 未捕获的类型错误 : object is not a function on second call

转载 作者:行者123 更新时间:2023-11-28 15:43:48 25 4
gpt4 key购买 nike

我继承了一些代码,我不允许更改太多,因为我的老板认为这会带来太多工作(该网站真的非常糟糕)。有一个 javascript 函数,用于播放声音 onclick 第一次调用它时效果很好,但第二次我得到 Uncaught TypeError: object is not a function 错误。

这是代码,不幸的是变量的命名很糟糕:

    function FP_playSound(path) {
var b, d = document, e, es, i, se = "<EMBED SRC='" + path + "' HIDDEN=TRUE LOOP=FALSE AUTOSTART=TRUE>";
if (d.body)
b = d.body;
if (d.getElementsByTagName) {
es = d.getElementsByTagName('embed');
for (i = 0; i < es.length; i++) {
e = es(i);
if (e.src == path) {
if (e.removeNode) e.removeNode();
break;
}
} if (b != null && b.insertAdjacentHTML) b.insertAdjacentHTML("beforeend", se);
}
}

这是其中一个调用:

<img id="img1" alt="" onclick="FP_playSound(/*url*/'sound/nikon-shutter.wav'); menue01_click(); " onmouseout="FP_swapImgRestore()" onmouseover="FP_swapImg(1,1,/*id*/'img1',/*url*/'images/menue01_ro.png')" class="style2" src="images/menue01.png" />

函数的命名和任何 ID 都没有冲突。这是我应该在 javascript 中了解的东西吗?我需要更改函数或调用吗?

最佳答案

问题出在这一行:

e = es(i);

尝试将 es 作为函数调用,但 es 不是一个函数,它是一个 NodeList

应该是:

e = es[i];

...从索引 i 的列表中检索条目。

第一次不会造成麻烦,因为第一次列表是空的,我们永远不会到达那行代码。第二次,因为您第一次添加了 embed 元素,所以列表不为空,我们到达这一行,这会引发错误(有充分的理由)。

关于javascript - 未捕获的类型错误 : object is not a function on second call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23011540/

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