Javascript 传递函数参数以更改div样式属性
我一直在试图解决这个问题:我想传递一个函数参数来选择一个div,这样我就可以用一个间隔来更改style.top的位置Javascript 传递函数参数以更改div样式属性,javascript,Javascript,我一直在试图解决这个问题:我想传递一个函数参数来选择一个div,这样我就可以用一个间隔来更改style.top的位置 var yPos = 0; var divOne = document.getElementById("div1"); var divTwo = document.getElementById("div2"); var divThree = document.getElementById("div3"); ..... function jump(which){ yPos
var yPos = 0;
var divOne = document.getElementById("div1");
var divTwo = document.getElementById("div2");
var divThree = document.getElementById("div3");
.....
function jump(which){
yPos++;
(which).style.top = yPos + "px";
var jumpTimeOut = setTimeout(jump,100,which);
if(yPos > 500){
clearTimeout(jumpTimeOut);
}
}
jump("divOne");
我可以为每个div变量使用switch语句,但是程序中有很多div,所以我想知道是否有方法将div名称与函数参数连接起来。要说我得到的是不能用当前代码更改NULL的属性样式
谢谢你的帮助
---->>我找到了一个解决方案,我将div名称字符串“div1”作为参数传递到函数中,因此我可以使用一个内部变量再次获取div:
var divOne = document.getElementById("div1");
var divTwo = document.getElementById("div2");
function jump(which){
var jumpingDiv = document.getElementById(which);
yPos++;
jumpingDiv.style.top = yPos + "px";
var jumpTimeOut = setTimeout(jump,100,which);
if(yPos > 500){
clearTimeout(jumpTimeOut);
}
}
jump("div1");
我认为这是一个奇怪的解决办法,但它确实有效。。呵呵 我在控制台中发现此错误:`Uncaught ReferenceError:yPos未定义`Ohh是的,对不起,yPos以前已定义,我忘记添加它。为什么要将变量名作为字符串传递?我认为
jump(“divOne”)代码>这应该是跳转(divOne)代码>。或者这是一个输入错误?那么很可能document.getElementById(“div1”)
已经导致了null
,因为您在DOM元素存在之前执行了该代码。您需要将正确的ID传递给document.getElementById()
;它不看JavaScript变量。因此,您必须始终传递div1
(ID),而不是divOne
(变量名)。