栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

未捕获的ReferenceError:函数未使用onclick定义

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

未捕获的ReferenceError:函数未使用onclick定义

切勿使用

.onclick()
或用户脚本中的类似属性!在常规网页中,这也是较差的做法)。

原因是用户脚本在沙箱(“隔离的世界”)中

onclick
运行,并且在目标页面范围内运行,并且看不到脚本创建的任何功能。

始终使

addEventListener()
Doc(或等效的库函数,如jQuery.on())。

因此,而不是像这样的代码:

something.outerHTML += '<input onclick="resetEmotes()" id="btnsave" ...>'

您将使用:

something.outerHTML += '<input id="btnsave" ...>'document.getElementById ("btnsave").addEventListener ("click", resetEmotes, false);

对于循环,您无法将数据传递给类似Seedoc的事件侦听器。再加上每次您进行这样的更改

innerHTML
,都将破坏以前的事件侦听器!

无需大量重构代码,就可以通过数据属性传递数据。因此,使用如下代码:

for (i = 0; i < EmoteURLLines.length; i++) {    if (checkIMG (EmoteURLLines[i])) {        localStorage.setItem ("nameEmotes", JSON.stringify (EmoteNameLines));        localStorage.setItem ("urlEmotes", JSON.stringify (EmoteURLLines));        localStorage.setItem ("usageEmotes", JSON.stringify (EmoteUsageLines));        if (i == 0) { console.log (resetSlot ());        }        emoteTab[2].innerHTML  += '<span  id="'+ EmoteNameLines[i]+ '" data-usage="' + EmoteUsageLines[i] + '">'          + '<img src="' + EmoteURLLines[i] + '" /></span>'          ;    } else {        alert ("The maximum emote (" + EmoteNameLines[i] + ") size is (36x36)");    }}//-- only add events when innerHTML overwrites are done.var targetSpans = emoteTab[2].querySelectorAll ("span[data-usage]");for (var J in targetSpans) {    targetSpans[J].addEventListener ("click", appendEmote, false);}

其中appendEmote像这样:

function appendEmote (zEvent) {    //-- this and the parameter are special in event handlers.  see the linked doc.    var emoteUsage  = this.getAttribute ("data-usage");    shoutdata.value += emoteUsage;}

警告:

  • 您的代码对多个元素重复使用相同的ID。不要这样做,这是无效的。给定的ID每页只能出现一次。
  • 每次使用
    .outerHTML
    或时
    .innerHTML
    ,都会在受影响的节点上丢弃所有事件处理程序。如果使用此方法,请当心这一事实。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/442061.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号