Javascript,数组传递“undefined”

时间:2012-10-18 01:25:12

标签: javascript html arrays

<html>
<head>
<script>
function replacesrc() {
    var array= new Array();
    array[1,2,3,4]=document.getElementById("From").value.split(" ");
    document.getElementById("map").src="https://maps.google.com/maps?f=d&amp;source=s_d&amp;saddr="+array[1]+"+"+array[2]+"+"+array[3]+",+North+Augusta,+SC&amp;daddr=Hilton+Head+Island,+SC&amp;geocode=FYn4_wEd4BQd-ym_ve9aOTP4iDGvGGPbsAEwOw%3BFfyU6wEdINAv-ymtGdOO3Hn8iDE9KKLreqblLA&amp;aq=1&amp;oq=hi&amp;sll=33.623768,-80.925293&amp;sspn=5.551464,10.129395&amp;hl=en&amp;mra=ls&amp;ie=UTF8&amp;t=m&amp;ll=32.88718,-81.37587&amp;spn=1.3416,1.24656&amp;output=embed"
    document.getElementById("test").value=array[1,2,3,4];
}


</script>
</head>
<body>

<iframe id="map" width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.com/maps?f=d&amp;source=s_d&amp;saddr=2000+Knobcone+Ave,+North+Augusta,+SC&amp;daddr=Hilton+Head+Island,+SC&amp;geocode=FYn4_wEd4BQd-ym_ve9aOTP4iDGvGGPbsAEwOw%3BFfyU6wEdINAv-ymtGdOO3Hn8iDE9KKLreqblLA&amp;aq=1&amp;oq=hi&amp;sll=33.623768,-80.925293&amp;sspn=5.551464,10.129395&amp;hl=en&amp;mra=ls&amp;ie=UTF8&amp;t=m&amp;ll=32.88718,-81.37587&amp;spn=1.3416,1.24656&amp;output=embed"></iframe>
<br />From: <input id="From" type="text" /> <button onClick="replacesrc()">Directions</button><input id="test" type="text" value="test" />

<br /><small><a href="https://maps.google.com/maps?f=d&amp;source=embed&amp;saddr=2000+Knobcone+Ave,+North+Augusta,+SC&amp;daddr=Hilton+Head+Island,+SC&amp;geocode=FYn4_wEd4BQd-ym_ve9aOTP4iDGvGGPbsAEwOw%3BFfyU6wEdINAv-ymtGdOO3Hn8iDE9KKLreqblLA&amp;aq=1&amp;oq=hi&amp;sll=33.623768,-80.925293&amp;sspn=5.551464,10.129395&amp;hl=en&amp;mra=ls&amp;ie=UTF8&amp;t=m&amp;ll=32.88718,-81.37587&amp;spn=1.3416,1.24656" style="color:#0000FF;text-align:left">View Larger Map</a></small>

</body>
</html>

这是我的代码。它不断传递它作为未定义。有人可以帮帮我吗?我尝试了不同的方法来解决这个问题。但我还是不能。从我的观点来看,我做得对,因为我放了一个测试函数来查看它发送的内容并且我得到了同样的确切的东西,但当它把它放在src中时它把它作为未定义。

1 个答案:

答案 0 :(得分:1)

尝试使用此代替前两行。然后访问从0开始的元素,因此array[0]是第一项,array[1]是第二项,等等。

var array = document.getElementById("From").value.split(" ");

最后一行使用:

document.getElementById("test").value = array.join();

为什么?

array[1,2,3,4]没有达到您的预期。这是相当不直观的。这里的逗号不允许您访问多个数组索引。

1,2,3,4是使用oddball逗号,运算符三次的表达式。对于表达式a,b,表达式a将被评估然后丢弃。将评估下一个b,它将成为逗号运算符的值。

1,2,3,4 == ((1,2),3),4
        == (2,3),4
        == 3,4
        == 4

所以写array[1,2,3,4]实际上与array[4]相同。