2017-07-05 9 views
0

ソートリスト項目を強いタグの数値で並べ替えることができます。その下にあるJavaScriptコードを使って数字を並べ替えると、divタグからそれらを取り出そうとします。 は(私は名前でソートするためにこれらのJSコードを使用すると、b = ...(LI)とき、それは正常に動作) HTML:HTML ul

<section> 
<button class="sortbynum" onclick="sortListNum()">Sort By Num</button> 
<ul id="sort"> 
    <li> 
     <div><h2>Name</h2></div> 
     <a href=""><img src=""/></a> 
     <div><span>Something:...</span></div> 
     <div><span>something:...</span></div> 
     <div><span>HHJS: <strong class="sortNum">456</strong></span></div> 
    </li> 
    <li>again</li> 
</ul> 

はJavaScript:

function sortListNum() {var list, i, switching, b, shouldSwitch, dir,switchcount = 0;list = document.getElementById("sort");switching = true;dir = "asc"; while (switching) {switching = false;b = list.getElementsByClassName("sortNum"); 
for (i = 0; i < (b.length - 1); i++) { 
    shouldSwitch = false; 
    if (dir == "asc") { 
    if (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) { 
     shouldSwitch= true; 
     break; 
    } 
    } else if (dir == "desc") { 
    if (b[i].innerHTML.toLowerCase() < b[i + 1].innerHTML.toLowerCase()) { 
     shouldSwitch= true; 
     break; 
    } 
    } 
} 
if (shouldSwitch) { 
    b[i].parentNode.insertBefore(b[i + 1], b[i]); 
    switching = true; 
    switchcount ++; 
} else { 
    if (switchcount == 0 && dir == "asc") { 
    dir = "desc"; 
    switching = true; 
    } 
}}} 
+0

こんにちはとスタックオーバーフローを歓迎するには、[歓迎ツアーを通過するための時間をとってください](https://stackoverflow.com/tour)ここで(あなたの最初のバッジを得るために)あなたのやり方を知り、[最小限の完全で検証可能な例を作成する方法を読む](https://stackoverflow.com/help/mcve)また、[How to Ask Questions(How to Ask Good Questions)](https://stackoverflow.com/help/how-to-ask)もチェックして、フィードバックや役に立つ回答を得る機会を増やしてください。 – DarkCygnus

+0

幸い!サイドノート、私たちはコード作成サービスではありません。 [良い質問をするには?](https://stackoverflow.com/help/how-to-ask)を参照してください。あなたはどんな研究をしようとしましたか?何を試しましたか?ここでの質問には、明らかな問題/質問、研究の表示、[最小、完全、および検証可能](https://stackoverflow.com/help/mcve)の例が必要です。 – GrumpyCrouton

+0

質問はjQueryというタグが付いていますので、こちらをご覧ください:https://stackoverflow.com/questions/304396/what-is-the-easiest-way-to-order-a-ul-ol-in-jquery 。私はあなたが並べ替えたい各ビットにクラスを追加し、並べ替え機能は簡単にそのクラス内のそのクラスをターゲットにすることができます –

答えて

0

私は」このことから、インライン要素からテキストを抽出できるかどうかを尋ねることができました。

他のものと同じように選択できますが、もう少し面白いです。

innerHTMLは、HTML、プレーンテキスト、またはその両方のHTMLを返します。

innerTextはプレーンテキストを返します。

textContentは、含まれているプレーンテキストをすべて1つの文字列に連結して返します。次の要素が新しい行にあるときにのみ改行文字で区切られます。

あなたは要素内だけの数よりも多くのテキストを持っているので、ちょうどstrongタグを選択してinnerTextを呼び出す:

document.querySelector('#sort .sortNum').innerText 
+0

私はテキストを抽出する必要はありません、私はそれらのリスト項目を並べ替える必要があります。 – theKln