0

ul の各項目の値を取得し、それらの要素から文字列を作成する for ループを作成しようとしています。While $("#sortable li:nth-child(1)").text(); 機能し (1 を 2、3、4 などに置き換えます)、各項目を一度に 1 つずつ取り込みます。以下の for ステートメントは一度に ul 全体をプルします。これを修正するにはどうすればよいですか?

        info = ''
        for (var i =1; i <= 7; i++) {
          value = $("#sortable li:nth-child(i)").text();
          alert(value);
          info = info + ',' + value;
        }
        alert(info);



<ul id="sortable">
  <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 1</li>
  <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 2</li>
  <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 3</li>
  <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 4</li>
  <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 5</li>
  <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 6</li>
  <li class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 7</li>
</ul>
4

3 に答える 3

5

パラメータは文字列として解析されています。i文字列を停止し、最初の値を連結する必要があります。

$("#sortable li:nth-child(" + i + ")").text();
于 2013-04-27T00:45:25.757 に答える
0

これはあなたが達成しようとしていることですか?element.querySelectorAll の使用

var lis = document.querySelectorAll("li"),
    array = [];

Array.prototype.forEach.call(lis, function (li) {
    array.push(li.textContent);
});

alert(array.join(","));

jsfiddleについて

または、 Array.forEach を使用する代わりに、Array.mapを使用します

var lis = document.querySelectorAll("li"),
    array = Array.prototype.map.call(lis, function (li) {
        return li.textContent;
    });

alert(array.join(","));

jsfiddleについて

または、jQueryセレクターjQuery.eachを使用して同じこと

var lis = $("li"),
    array = [];

$.each(lis, function (index, li) {
    array.push($(li).text());
});

alert(array.join(","));

jsfiddleについて

またはjQuery.mapを使用して

var lis = $("li"),
    array = lis.map(function () {
        return $(this).text();
    }).toArray();

alert(array.join(","));

jsfiddleについて

特にforループとして保持したい場合は、jqueryセレクターを使用したい場合は、上記の例からそれを理解できます。

var lis = document.querySelectorAll("li"),
    length = lis.length,
    array = [];

for (i = 0; i < length; i += 1) {
    array.push(lis[i].textContent);
}

alert(array.join(","));

jsfiddleについて

于 2013-04-27T00:58:29.713 に答える
0

ループの代わりにこれを試してください。

var info = $('#sortable li').slice(0,7).map(function(){
  return $.trim($(this).text());
}).toArray().join(', ');

console.log(info);
//=> "Item 1, Item 2, Item 3, Item 4, Item 5, Item 6, Item 7"
于 2013-04-27T00:46:28.370 に答える