2
我有一個無序列表和li元素可以拖動和順序可以改變一個UL的正確順序。這工作正常的問題發生我使用這行代碼: var items = ul.getElementsByTagName(「li」); 它將以原始順序返回HtmlCollection,而不是用戶將列表項目移入的當前順序。功能的getElementsByTagName沒有返回有拖動列表項
我拍攝的順序列表是在我已經搬了好李的身邊後,與Chrome瀏覽器的屏幕截圖。請注意它是如何像最初顯示一樣訂購的?
但是,如果我展開[0 ... 99]標籤我看到了正確的順序。 (如何看前幾名已經搬了嗎?這是我需要遍歷的順序。)
這裏是HTML文本。
<ul id="first_" class="sortable_unstyled" data-sortable-id="0" aria-dropeffect="move">
<li draggable="true" role="option" aria-grabbed="false" style="list-style-type: none;" id="first_li_0" >
<div>
<input id="first_sectionnumber_0" type="number" />
</div>
</li>
<li draggable="true" role="option" aria-grabbed="false" style="list-style-type: none;" id="first_li_1" >
<div>
<input id="first_sectionnumber_1" type="number" />
</div>
</li>
// There is more than a 100 more lis after these
</ul>
JavaScript函數是:
function RenumberQuestionIndexes(ulObj) {
var count = 0;
var ul = document.getElementById(ulObj);
var items = ul.getElementsByTagName("li");
var indexinput = ulObj + "order_index_";
for (var i = 0; i < items.length; ++i)
{
if(items[i].style.display.indexOf('none') >= 0)
{
document.getElementById(indexinput + i.toString()).value = -1;
}
else
{
document.getElementById(indexinput + i.toString()).value = count;
count++;
}
}
}
因此,如何能我通過的HTMLCollection項目列表進行迭代,並獲取當前顯示的實際順序屏幕上?
你什麼時候調用'RenumberQuestionIndexes'?顯示你調用的代碼RenumberQuestionIndexes – 2016-12-16 16:06:03
'getElementsByTagName'肯定會給你一個DOM元素順序的集合。您的拖動腳本如何更改其順序?如果你從'getElementsByTagName'得到的順序實際上不是你看到的順序,那麼它聽起來就像它只是在視覺上(這很奇怪)。 –
另外,請注意這一點:http://stackoverflow.com/questions/38660832/element-children-has-elements-but-returns-empty-htmlcollection –