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

你应该试试 knockout.js,这个框架将帮助你处理这种情况。

于 2013-03-26T16:38:50.933 回答
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

您可以尝试类似下面的方法,即拆分包含成员的 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

所以你想把朋友[]数组中的数据放入<div id="members">

我只希望那些名称显示在 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 回答