如何传递元素's ID作为使用getElementById的函数的参数
How to pass the element's ID as an argument to a function which uses getElementById?
我写这段代码是为了测试。在我的HTML文件中,我有一些用display:none
设置的div。我写了一个脚本来获取这些div的内容,并将它们分配给另一个div。现在,这个脚本是有效的,但我想知道一种将"loadcontent"函数作为单个函数编写的方法。这是代码:
'use strict';
var gameWorld = {
contentoutput: document.getElementById("contentoutput"),
linkhome : document.getElementById("linkhome"),
linkshop : document.getElementById("linkshop"),
linkupgrade : document.getElementById("linkupgrade"),
linkachievement : document.getElementById("linkachievement"),
addEventHandlers : function() {
linkhome.addEventListener("click", loadcontent1);
linkshop.addEventListener("click", loadcontent2);
linkupgrade.addEventListener("click", loadcontent3);
linkachievement.addEventListener("click", loadcontent4);
}
}
function loadcontent1 () {
var x = document.getElementById("contenthome").innerHTML;
contentoutput.innerHTML = x;
};function loadcontent2 () {
var x = document.getElementById("contentshop").innerHTML;
contentoutput.innerHTML = x;
};function loadcontent3 () {
var x = document.getElementById("contentupgrade").innerHTML;
contentoutput.innerHTML = x;
};function loadcontent4 () {
var x = document.getElementById("contentachievement").innerHTML;
contentoutput.innerHTML = x;
};
function init() {
gameWorld.addEventHandlers()
}
document.addEventListener("DOMContentLoaded", init);
我试着这样写(不起作用):
function loadcontent(contentid) {
var x = document.getElementById(contentid).innerHTML;
contentoutput.innerHTML = x;
}
并更改了事件处理程序
addEventHandlers : function() {
linkhome.addEventListener("click", loadcontent("contenthome"));
linkshop.addEventListener("click", loadcontent("contentshop"));
...
}
- 有人知道为什么不起作用吗
- 我怎样才能让它工作
- 作为一个附带问题:为什么
contentoutput.innerHTML
在没有指定gameWorld.contentoutput
的情况下工作
事件处理程序需要一个未执行的函数:
linkhome.addEventListener("click", function () { loadcontent("contenthome") });
通过传递参数,实际上就是在执行loadcontent
函数。因此,处理程序获取函数返回的内容,而不是函数本身。要解决此问题,请将laodcontent("contenthome")
封装在函数表达式中,以便稍后单击处理程序可以触发它。
相关文章:
- reactjs this.refs vs document.getElementById
- 如何通过adf中的document.getElementById获取inputText字段值
- 无法获取文档.GetElementById工作正常
- document.getElementById(“st”).click();不起作用
- Javascript:Can't使用getElementById获取元素
- 如何使用“;getElementById”;在一个循环中
- Javascript GetElementByID has no value
- document.getElementById并使用id名称
- document.getElementById在js中不起作用
- document.getElementById.style.backgroundImage not working
- 如何从document.getElementById()中获取UniqueID
- 从输入框、Javascript、getElementById获取值
- 什么'这个javascript代码getElementById有问题
- DOMDocument getelementbyid conflict?
- 如何从getelementbyid用javascript编写变量
- inline svg--getElementById在Opera中不起作用
- 在init function()中调用getElementById(“..”),而不是想用它做点什么的函数
- 将global.getelementbyid连接到单个变量中
- 未捕获的类型错误:未定义不是上的函数.GetElementByID
- document.getElementById(..) is null