【问题标题】:Javascript, array is passing "undefined"Javascript,数组正在传递“未定义”
【发布时间】:2012-10-18 09:36:21
【问题描述】:
<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 中时,它把它设置为未定义。

【问题讨论】:

  • 貌似有人习惯了php的list()

标签: javascript html arrays


【解决方案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 是一个使用奇怪的逗号, 运算符三次的表达式。对于表达式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]是一样的。

【讨论】:

  • 好的!谢谢!它起作用了,现在我明白了。但如果你能帮助我,我确实有另一个问题。它现在没有更新我的地图,但它传递了正确的变量。
  • @Matt 我建议将其作为一个单独的问题发布。
  • 好的,谢谢您的帮助。会代表你或投票支持它的名称,但我没有 15 个代表。
猜你喜欢
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多