获取“预期对象”;使用包含字符串的变量作为getElementById()的参数时出现错误
Getting "object expected" error when using a variable containing a string as an argument for getElementById()
我正在做一个5只虫子在屏幕上随机飞行并从侧面反弹的动画。我创建了一个函数来为每个bug制作动画。这是函数的一部分。当我将bugName变量传递给getElementById()时,它包含字符串"bugOne"。当我使用这段代码时,我得到了这一行的对象预期错误。
if (xDirection == "right" && xPosition > (widthMax - document.getElementById(bugName).width - flySpeed))
xDirection = "left";
当我使用这段代码时,没有语法错误(尽管由于某种原因动画仍然不能正常工作)。
if (xDirection == "right" && xPosition > (widthMax - document.getElementById("bugOne").width - flySpeed))
xDirection = "left";
如何将bugName
传递给getElementById()
而不出现语法错误?
这就是"bugOne"如何进入bugName。我正在删除一些代码,只显示基本的。
我从主体onload事件处理程序中调用它。
<body onload="flyVar=setInterval('setBug(''bugOne'')', 30);">
在文档头部调用了这个函数
function setBug(bugName) {
flyBug(bugName);
}
调用了这个函数它也在文档头部
function flyBug(bugName) {
if (bugName == "bugOne") {
flySpeed = 5;
xPosition = 0;
yPosition = 100;
xDirection = "right";
yDirection = "up";
if (xDirection == "right" && xPosition > (widthMax - document.getElementById(bugName).width - flySpeed))
xDirection = "left";
}
这里的问题是setInterval()
不直接支持包括参数(我目前无法测试,但我相信Mozilla在那里发现了以下内容:
回调参数如果你需要传递一个参数给你的回调函数,但需要它在Internet Explorer中工作,其中不支持发送附加参数(也不支持setTimeout()或setInterval()),您可以包含此特定于ie的兼容性代码,它将启用HTML5标准参数在浏览器的通道功能,这两个计时器只是通过将它插入到脚本的开头。
[…示例代码…]
另一种可能性是使用匿名函数调用回调,但是这个解决方案有点贵。例子:
var intervalID = setInterval(function() { myFunc("one", "two", "three"); }, 1000);
另一种可能是使用函数的绑定。例子:
var intervalID = setInterval(function(arg1) {}.bind(undefined, 10), 1000);
因此,我相信您可以通过更改onload调用来纠正这种行为,如下所示:
<body onload="flyVar=setInterval(function() { setBug('bugOne'); }, 30);">
相关文章:
- 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