我有这段代码
<script type="text/javascript">
var slideStart = 1;
var slideCount = 4;
function callArr() {
var arrName = {"rose":"5", "daisy":"4",
"orchid":"3", "sunFlower":"10",
"Lily":"15"};
for (var flwr in arrName) {
if (slideStart <= slideCount) {
document.getElementById('test').innerHTML += flwr +
" >>>>>>>> " +
arrName[flwr] +
"<br />";
slideStart++;
break;
}
}
}
</script>
我想在任何事件上单独访问数组元素。可以请任何帮助我吗????
答案 0 :(得分:2)
当然,由于你使用像这样的条件,它只会打印第一个元素
if (slideStart <= slideCount)
修改代码以迭代对象属性。其中一个可能的解决方案:
var slideStart = 0;
var slideCount = 4;
function callArr() {
var arrName = {"rose":"5", "daisy":"4",
"orchid":"3", "sunFlower":"10",
"Lily":"15"};
var i = 0;
for (var flwr in arrName) {
if (i == slideStart) {
document.getElementById('test').innerHTML += flwr +
" " +
arrName[flwr] +
"<br />";
slideStart++;
break;
}
i++;
}
}
在此处试试:http://jsfiddle.net/2nDv8/
如您所见,它会在每次通话后打印下一个属性。
答案 1 :(得分:1)
如果您在任何地方引用访问权限,则可以将其声明为全局变量:
<script type="text/javascript">
var slideStart = 1;
var slideCount = 4;
var arrName = {"rose":"5", "daisy":"4",
"orchid":"3", "sunFlower":"10",
"Lily":"15"}; //Declare var outside, so it's global
function callArr() {
for (var flwr in arrName) {
if (slideStart <= slideCount) {
document.getElementById('test').innerHTML += flwr +
" >>>>>>>> " +
arrName[flwr] +
"<br />";
slideStart++;
//break; //This prevents from showing more. Erase it
}
}
}
</script>
另请注意,break
语句导致仅显示第一个元素
希望这会有所帮助。干杯
答案 2 :(得分:1)
这与浏览器不完全兼容,但您可以使用Object.keys(arrName)
。或者实际创建和存储一个行为相同的数组,如果你真的担心跨浏览器的兼容性。
答案 3 :(得分:0)
它只打印一次,因为你在循环中放了一个"break"
。此代码将毫无问题地打印所有元素。您的slideStart
和slideCount
变量也会导致一个问题。如果要打印所有这些内容,请将slideStart
更改为0,以便它将打印所有元素,而不仅仅是其中的4个。希望有所帮助:
function callArr() {
var arrName = {"rose":"5", "daisy":"4",
"orchid":"3", "sunFlower":"10",
"Lily":"15"};
for (var flwr in arrName) {
if (slideStart <= slideCount) {
document.getElementById('test').innerHTML += flwr +
" >>>>>>>> " +
arrName[flwr] +
"<br />";
slideStart++;
//break;
}
}
}
答案 4 :(得分:0)
这可能就是你想要的。在这里试试:http://jsfiddle.net/Hsn4c/1/
function callArr() {
var slideStart = 0;
var slideCount = 4;
var arrName = {
"rose": "5",
"daisy": "4",
"orchid": "3",
"sunFlower": "10",
"Lily": "15"
};
for (var flwr in arrName) {
if (slideStart <= slideCount) {
document.getElementById('test').innerHTML += flwr + ">>>>>" + arrName[flwr] + "<br />";
slideStart++;
//break;
}
}
document.getElementById('test').innerHTML += '==========<br />';
}