【问题标题】:populate array from list onclick javascript从列表 onclick javascript 填充数组
【发布时间】:2014-07-23 23:37:15
【问题描述】:

我正在用 JS 编写代码,但我不知道单击按钮时如何填充数组。我们有这段代码,它使用一个列表(ul),其中项目(li)可以用鼠标移动。 onclick如何用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>

【问题讨论】:

    标签: javascript jquery html ajax arrays


    【解决方案1】:

    您可以使用这样的功能。您正在寻找的是 .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/

    【讨论】:

    • 谢谢,一切正常,我进入的位置只是更改了 item_X 的类名,并在您的代码中包含了一行,谢谢。行: orderArray.push($("li")[i].className.slice(5));再次感谢您的宝贵时间。
    【解决方案2】:

    在您的函数 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') 调用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      相关资源
      最近更新 更多