2016-01-21 108 views
0

我提前为幼稚的问题表示歉意,但我在javascript中的新手。如何将数组元素作为参数传递给JavaScript中的函数?

下面这个简单的代码需要在网页中改变的图像。事实上,点击链接A1和A2中的一个可以完成这项工作;相反,B1和B2没有。

可能是因为它的功能不能拿一个数组的元素本身作为参数,并需要某种参照其内容?

我看到这个问题How to pass an array as argument to a function in javascript?,但是,如果我理解正确,它是关于传递数组作为一个整体:“向函数传递数组是从通过任何其他类型...没有什么不同”。

感谢您的关注!

<HTML> 
<HEAD> 
<TITLE></TITLE> 
<script type="text/javascript"> 
    var images = new Array["1.bmp","2.bmp"]; 

    function changeImage(a) { 
     document.getElementById("image").src=a; 
    } 
</script> 

</HEAD> 
<BODY> 

<P onclick="changeImage('1.bmp');">A1</P> 
<P onclick="changeImage('2.bmp');">A2</P> 

<P onclick="changeImage(images[0]);">B1</P> 
<P onclick="changeImage(images[1]);">B2</P> 

<P onclick="changeImage(images[0]);window.alert(images[0]);">C1</P> 
<P onclick="changeImage(images[1]);window.alert(images[1]);">C2</P> 

<P><img id="image" src="3.bmp"></P> 

</BODY> 
</HTML> 
+0

欢迎[这么]!您可以通过将其输入到JavaScript控制台或使用像JSHint这样的linter来检查使用的JavaScript语法是否正确。这应该强调代码的任何问题。 –

+0

使用Chrome开发工具加载页面,然后按F12。查看控制台输出以查找任何明显的错误。 –

回答

0

您的代码出现的问题是,图像[]是一个Javascript保留值。这是引用文档的DOM中的图像。

如果您通过右键单击图像并单击“检查元素”来检查图像,您会发现它将一个对象注入到<img>元素的src中。该对象是图像元素本身。

简单地改变你的阵列看起来像这将工作:

var imgs = ["1.bmp","2.bmp"];

+0

谢谢大家的回复!我要研究你所有的提示...... – PoincareConjecture

1

您的images数组从未正确定义。

如果使用new Array你要调用它像一个函数定义的数组,因此使用圆括号var array = new Array("1.bmp","2.bmp");

一种更简单,也许更为常用的方法是做这样的:

var array = ["1.bmp","2.bmp"];

所以你的整个代码会是这样的:

var images = new Array("1.bmp","2.bmp"); 
 

 
function changeImage(a) { 
 
    document.getElementById("image").src=a; 
 
}
<P onclick="changeImage('1.bmp');">A1</P> 
 
<P onclick="changeImage('2.bmp');">A2</P> 
 

 
<P onclick="changeImage(images[0]);">B1</P> 
 
<P onclick="changeImage(images[1]);">B2</P> 
 

 
<P onclick="changeImage(images[0]);window.alert(images[0]);">C1</P> 
 
<P onclick="changeImage(images[1]);window.alert(images[1]);">C2</P> 
 

 
<P><img id="image" src="3.bmp"></P>

相关问题