JavaScript create 元素,然后添加它一个事件
JavaScript create element then add it an event
我正在尝试创建一个元素(没有 DOM 或 jQ 请),然后应用它一个偶数...新创建的元素正确显示,javascript 工作...
var dato = "";
dato += "<div id='todas'>";
dato += "<img src=/logos/todos_generos.jpg>";
dato += "<span>Todas</span>";
dato += "</div>";
document.getElementById('generos').innerHTML += dato;
document.getElementById("todas").onclick = myFunction;
function myFunction(){
alert("This is not working");
}
但是如果以后我也使用 innerHTML 添加另一个元素,以前的元素 JS 将停止工作:
var dato = "";
dato += "<div id='someRandom'>";
dato += "<img src=/logos/todos_generos.jpg>";
dato += "<span>Todas</span>";
dato += "</div>";
document.getElementById('generos').innerHTML += dato;
document.getElementById("todas").onclick = myFunction;
我听说innerHTML在已经创建的元素上存在问题,这应该通过附加子元素来完成,但这太大而无法正确管理。
你可以insertAdjacentHTML()
,它的工作原理类似,但不会破坏现有元素:
document.getElementById('generos').insertAdjacentHTML( 'beforeend', dato );
innerHTML
的工作方式基本上是:
- 以字符串形式获取所有 HTML 内容
- 附加新字符串
- 将结果作为内容写回元素
将现有元素转换回文本时,显然会丢失所有分配的事件处理程序。
不要使用 innerHTML
,它会删除以前绑定到元素的所有事件处理程序。您可以使用insertAdjacentHTML
方法来保留事件:
var dato = "";
dato += "<div id='someRandom'>";
dato += "<img src=/logos/todos_generos.jpg>";
dato += "<span>Todas</span>";
dato += "</div>";
document.getElementById('generos').insertAdjacentHTML('beforeend', dato);
另一种解决方案是使用appendChild
方法手动附加新元素,但这更详细:
var div = document.createElement('div');
div.innerHTML = dato;
document.getElementById('generos').appendChild(div);
相关文章:
- React应用程序:道具在下一个事件后更新
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 全局屏幕span onclick触发一个事件javascript
- 在一个“事件”之后触发一个事件;喜欢“;
- 在离子2中,有任何方法可以将涡旋动量作为一个事件来检测
- 完整日历在多个资源上添加一个事件
- TinyMCE 将另一个事件添加到粗体和斜体按钮
- jQuery触发另一个事件中的事件
- 试图使一个事件依赖于另一个事件,并使用jquery自定义事件传递数据
- 存储一个事件处理程序中的变量以供另一个事件处理器使用
- 当表单验证失败时,我将如何最好地处理下一个事件
- 正在创建一个事件以更改鼠标悬停时的图片
- 当一个单元格被编辑时,是否有一个事件触发,但值没有'不要改变
- JavaScript一次性在多个元素上注册一个事件类型
- 如何在点击时发生另一个事件后使用localscroll
- Vanilla Js:在一个事件中开始一段时间的循环,然后用第二个事件打破它?('mouseover'启
- 取消除最后一个事件之外的所有事件,
- 鼠标滚轮按压-描述了一个事件的名称,以及如何使用jQuery侦听它
- Javascript开始处理下一个事件,然后第一次完成
- 在Jquery中将标志从一个事件传递到另一个事件