Javascript 向循环中的文档添加图像

Javascript 向循环中的文档添加图像,javascript,Javascript,我已经编写了这段javascript代码,以在延迟3秒后添加每个图像,但这段代码不起作用 function start() { while(true) { setTimeout(addObstracles(), 3000) } } function addObstracle() { var element = document.createElement('img'); element.id = 'obs';

我已经编写了这段javascript代码,以在延迟3秒后添加每个图像,但这段代码不起作用

function start() {
    while(true) {
        setTimeout(addObstracles(), 3000)
    }
}

function addObstracle() {
        var element = document.createElement('img');    
        element.id = 'obs';
        element.className = 'obstracleAnimation';
        element.src = 'enemy.png';
        element.style.position = 'absolute';
        element.style.top = '0px';
        element.style.left = '100%';
        element.style.width = '150px';
        element.style.height = '100px';
        document.body.appendChild(element);
}

setTimeout
获取函数引用。您有一个函数调用

有多种方法可以写出来:

setTimeout('addObstracles()', 3000) //i don't like this way
setTimeout(addObstracles, 3000) // pass the reference (I like this way!)
setTimeout(function() {
    addObstracles()
}, 3000) //I like this when `addObstracles has parameters!

就像Sterling在他的回答中提到的那样,您调用函数
addObstracles
,而不是将其传递给
setTimeout
,只是我想补充一点,因为您在固定的时间间隔上设置timout函数,所以可以使用
setInterval
函数:

function start() {
    setInterval (addObstracles, 3000);
}

此代码存在多个问题。我将补充以下答案:

  • 小心你定义的函数和你调用的函数:something!=有些事

  • 在调用
    start()
    函数时要小心:它必须在body标记之后,或者
    body.appendChild
    将不存在

  • 请注意如何设置元素的样式。对于当前样式,它根本不显示。我刚刚删除了
    element.style.position='absolute'以使其可见

  • 确保您尝试显示的图像与脚本位于同一文件夹中


更好地定义“不工作”。没有生成图像可能是因为您在
setTimeout
调用中调用了addObstracles,该方法不会返回任何内容。是否存在任何开发控制台错误?可能是重复的,他也会调用AddResponsible而不是AddResponsible。@SajalAli检查您的JavaScript控制台,您会看到一些漂亮的红色错误消息,这些消息将帮助您解决无法工作的问题,这会冻结浏览器
id
属性的唯一性,您只能将其分配给一个元素,删除
element.id='obs'来自您的代码。