我正在用JS编写代码,我不知道如何在单击按钮时填充数组。我们有这个代码,它使用一个列表(ul),其中项目(li)可以用鼠标移动。如何使用2个数据填充数组,第一个位置和最后一个位置?
<!doctype html>
<html lang="en">
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script src="https://raw.github.com/furf/jquery-ui-touch-punch/master/jquery.ui.touch-punch.min.js"></script>
<script>
$(function() {
$( ".documents" ).sortable();
$( ".documents" ).disableSelection();
});
</script>
<meta charset="utf-8">
<title>toArray demo</title>
<style>
span {
color: red;
}
</style>
</head>
<body>
Reversed - <span></span>
<ul id="opciones" class="documents">
<li>uno</li>
<li>dos</li>
<li>tres</li>
</ul>
<script>
function disp( li ) {
var a = [];
for ( var i = 0; i < li.length; i++ ) {
a.push( li[ i ].innerHTML );
}
$( "span" ).text( a.join( " " ) );
}
disp( $( "li" ).toArray() );
</script>
<input type="button" value="actualizar_array" onclick="disp('#opciones')" />
</body>
</html>
答案 0 :(得分:0)
在函数disp()
中,您将参数(li)视为数组,但是您将其作为字符串发送:disp('#opciones')
。我想你想试试这个:
function disp( ul ) {
var a = [];
var mainUL = document.getElementByID( ul );
var li = mainUl.childNodes;
for ( var i = 0; i < li.length; i++ ) {
a.push( li[ i ].innerHTML );
}
$( "span" ).text( a.join( " " ) );
}
使用disp("opciones")
而不是disp('#opciones')
来调用它。
答案 1 :(得分:0)
您可以使用这样的功能。您正在寻找的是.each
方法。
function updateOrder(){
var a= [];
$("#opciones li").each(function(i, li){
a.push($(li).text());
});
// a now has the values of your list items in order
// so you can do:
$( "#display" ).text( a.join( " " ) );
}
使用可排序插件,您可以从'sortupdate'事件中调用updateOrder:
$('#opciones').sortable().bind('sortupdate', function() {
updateOrder();
});
我为你演示了一点小提琴。 http://jsfiddle.net/56Sr2/5/