0

オンラインの人の名前を表示するdivがあります。divには次のメンバーがいます。

<div id="members">
<span>Amlan Karmakar</span>
<span>Atin Roy</span>
<span>Arpan Burman</span>
<span>Ramanuj Mukherjee</span>
</div>

別のjavascript配列friends[]があり、これには友達がいて'Amlan Karmakar'、友達がいます。配列に含ま'Ramanuj Mukherjee'れているメンバーを表示したいのでfriends[]、友達の名前を。で挿入していfriends.push("Amlan Karmakar")ます。divの名前はcometdチャットによって自動生成されます。簡単にするためにdivに名前を書きました。この問題の解決策があることを願っています。私の前の質問は私の問題を解決しませんでした。

4

4 に答える 4

0

以下のようなものを試すことができます。つまり、メンバーを含むdivのHTMLを分割し、それらをループして、それらがfriendsArrayにあるかどうかを確認します。これは大まかな実装であり、Ecmascript 5の機能を使用しているため、かなり新しいブラウザーを想定していることに注意してください。この概念は、昔ながらのforループを使用して適用することもできます。

var all = document.getElementById('members').getElementsByTagName('span');
var friendsOnly = '';
for(var i=0; i<all.length; i++){
    if(friendsArray.some(function(friend){
        return friend == all[i].innerHTML;
    })){
        friendsOnly += '<span>' + all[i].innerHTML + '</span>';
    }
});
all.innerHTML(friendsOnly);

ちなみに、friendsArrayにはまだdivにいない人が含まれている可能性があると思います。そうでない場合は、質問が何であるかわかりません。

于 2013-03-26T14:26:47.427 に答える
0

これを試して、メンバーのリストから友達だけを削除してください。

var friendMembers = document.getElementById('members').split(/<br\s*[\/]?>/gi)
      .filter(function(member) { return (friends.indexOf(member) > -1) } );
于 2013-03-26T14:32:07.987 に答える
0

したがって、friends[]配列からのデータを<div id="members">

friends[]配列にある名前だけを表示したい

コメントで提案したように、friends配列にある名前だけを表示したい場合は、これでうまくいくと思います。

var target = document.getElementById("members");

// Remove this line if you want to keep the current names in the members div.
target.innerHTML = ""; // Clean before inserting friends

for (var i = 0; i <= friends.length; i++) {
    target.innerHTML += friends[i] + "<br />"; // Add friend + break
}
于 2013-03-26T14:35:15.450 に答える
0

knockout.jsを試してみてください。このフレームワークは、このケースの処理に役立ちます。

于 2013-03-26T16:38:50.933 に答える