2017-07-02 167 views
2
<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<script type="text/javascript"> 
testArray =[[ 'text1', 'text2', 'text3' ], 
    [ 'question', 
     'correct answer', 
     'second answer', 
     'third answer', 
     'fourth answer' ], 
    [ 'question', 
     'correct answer', 
     'second answer', 
     'third answer', 
     'fourth answer', 
     'fifth answer', 
     'sixth answer' ]]; 

</script> 
</head> 

<body> 

<div id = "passage"></div> 
<div id = "question"></div> 
<div id = "answers"></div> 

<script> 

$.each(testArray[1].slice(1), function (i) { 
    $("#answers").append("<p>" + testArray[1][i] + "</p>"); 
}); 

</script> 

</body> 
</html> 

当我跑了这一点,我是通过元素期待最后的每个循环来从testArray[1][1]testArray[1][4]。不过由于某种原因,它只能达到testArray[1][3]。有谁知道问题是什么?Jquery的每个循环没有得到最后一个元素

编辑:

我做到这一点,它以某种方式工作了什么,我想做的事(开始于指数1元,并循环到最后):

$.each(testArray[1].slice(1), function (i) { 
    $("#answers").append("<p>" + testArray[1][i + 1] + "</p>"); 
}); 

不知道如何/为什么这工作虽然。

+0

'slice'删除最后一个元素。你不需要使用切片。只要删除它,它会起作用。 –

+0

我想使用切片,以删除第一个元素(索引0),并从第二个元素(索引1)开始循环。 –

+0

删除第一个元素,您需要使用'shift()'或'splice(0,1)' –

回答

0

这确实很奇怪。我与ES6版本尝试过了,它工作得很好:

testArray[ 1 ].slice(1).forEach(item => { 
    $("#answers").append("<p>" + item + "</p>"); 
    }); 
-1

编辑

的问题是你的切片阵列传递给$。每次,但回调里面你索引原始数组。

$ .each收到的数组是['正确答案','第二个答案','第三个答案','第四个答案'],但它内部从testArray获取值,当你真的想要它从数组中'传入。一种解决方案是只使用传入的值作为回调函数的第二个参数。

testArray =[[ 'text1', 'text2', 'text3' ], 
 
    [ 'question', 
 
     'correct answer', 
 
     'second answer', 
 
     'third answer', 
 
     'fourth answer' ], 
 
    [ 'question', 
 
     'correct answer', 
 
     'second answer', 
 
     'third answer', 
 
     'fourth answer', 
 
     'fifth answer', 
 
     'sixth answer' ]]; 
 

 
$.each(testArray[1].slice(1), function (i, value) { 
 
    $("#answers").append("<p>" + value + "</p>"); 
 
});
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script type="text/javascript"> 
 

 

 
</script> 
 
</head> 
 

 
<body> 
 

 
<div id = "passage"></div> 
 
<div id = "question"></div> 
 
<div id = "answers"></div>

+0

我想用切片去掉第一个元素......我该怎么做? –

+0

为你更新了我的答案。 –

-1

只需添加一个简单的if条件,下面是代码:

testArray = [ 
 
    ['text1', 'text2', 'text3'], 
 
    ['question', 
 
    'correct answer', 
 
    'second answer', 
 
    'third answer', 
 
    'fourth answer' 
 
    ], 
 
    ['question', 
 
    'correct answer', 
 
    'second answer', 
 
    'third answer', 
 
    'fourth answer', 
 
    'fifth answer', 
 
    'sixth answer' 
 
    ] 
 
]; 
 

 
$.each(testArray[1], function(i) { 
 
    if (i > 0) 
 
    $("#answers").append("<p>" + testArray[1][i] + "</p>"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="passage"></div> 
 
<div id="question"></div> 
 
<div id="answers"></div>

+0

永久更改阵列,这不是我想要的 –

+0

好吧,以便更改您的问题。其次,努力不应该被低估。 –

+0

增加了一个'if'条件来忽略数组的第一个元素而不影响原来的'array' –

相关问题