为什么JavaScript函数的参数返回'undefined'?

0 html javascript parameters dom

我正在尝试编写一个简单的JS函数,它每1秒随机旋转一个CSS块的背景图像.我想添加块的名称和参数的图像数量,因此函数可以尽可能灵活,我可以在一个页面上调用它的多个实例.问题是我得到' nameofparamter undefined'错误.

这是带有HTML的脚本

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="hu-HU" lang="hu">
<head>
<meta name="http-equiv" content="text/html; charset="utf-8"">
<meta name="description" content="leiras"><meta name="keywords" content="kulcsszavak"/>
<style type="text/css"> 
div#mycontainer{
background-image: url(images/bg_image1.jpg);
width: 800px;
height: 600px; 
}
</style>
<script type="text/javascript" charset="utf-8">
function changeBgImage(num, el){
    var imageNum = num;
    var randomImageNum = Math.ceil(Math.random()*imageNum);

    if(el!=='null'){
        el.style.backgroundImage='url(images/bg_image'+randomImageNum+'.jpg';
            var timer = setTimeout("changeBgImage(num, el)", 1000);
    }
}

</script>  
</head>
<title>Dynamic Backgroundimage changer</title>
<body onload="changeBgImage(4, document.getElementById('mycontainer'));">
<div id="mycontainer">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut felis purus, dictum quis pellentesque ut, venenatis et tellus. Phasellus gravida cursus urna, quis hendrerit risus rutrum vel. Suspendisse dictum lobortis molestie. Sed quis lacus nec ante dignissim sollicitudin. Curabitur tristique facilisis turpis.
</div>  
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我真的不明白'因为在我调用函数的body的onload事件处理程序中有两个参数的迭代值?那为什么不定义?非常欢迎您的帮助!:)

Dav*_*und 5

有很多关于你的代码不正确的事情.首先,您的空检查仅检查变量没有完全正确的字符串值'null'.在设置backgroundImage属性的位置,您指定的字符串具有不匹配的括号.

但最重要的是,setTimeoutwindow上下文中执行,您的变量不可用(也不应该是它们).相反,将您的通话更改为

setTimeout(function() { changeBgImage(num, el) }, 1000);
Run Code Online (Sandbox Code Playgroud)

所以一个完整的解决方案

if(el){
    el.style.backgroundImage='url(images/bg_image'+randomImageNum+'.jpg);';
    var timer = setTimeout(function() { changeBgImage(num, el) }, 1000);
}
Run Code Online (Sandbox Code Playgroud)