在Javascript

时间:2016-02-08 12:15:24

标签: javascript arrays variables

尝试制作一个小聊天程序,我目前正在使用click函数创建新容器(要聊天的新频道)并将其添加到我的HTML页面。

我想在我创建的每个容器中添加一个数组(白名单)并以某种方式命名,以便我以后可以调用它,但容器的数量不受限制,所以我会有用变量或其他东西来做。

我目前正在为所有容器使用一个数组;代码段:

i = 0;
$('#newroom').click(function () {
   chatroom = {};
   chatroom.whitelist = [];
   //making every whitelist unique here
   //here i am creating all the other stuff
   i++;
});

我想稍后再将白名单称为

document.getElementById('chatroom.whitelist' + i)

或类似的东西,我只是想区分它们以使名称存储在一个特定的白名单中。

我不知道是否有更简单的方法,因为我是Javascript的新手,但我确实希望你能帮助我。

3 个答案:

答案 0 :(得分:0)

您的模型不需要每个白名单的唯一ID。因为您将白名单添加到聊天室。

另一方面,当您想要document.getElementById('chatroom.whitelist' + i)

时,您的代码无效

因为每次点击都要添加新的聊天室。点击10次后,您将有10个聊天室。如果你想选择第三个聊天室,你打算做什么?所以id需要在聊天室:

chatrooms = [];

$('#newroom').click(function () {
   chatroom = {};
   chatroom.whitelist = [];
   id = chatrooms.length;
   chatrooms.push(chatroom);
});
//select 3rd chatroom
chatr = chatrooms[2];
//get the whitelist
wl = chatr.whitelist;

答案 1 :(得分:0)

考虑以下简单方法:
假设我们有一个用于id="chatroom"聊天室的主容器和一个带id="newroom"的自定义按钮。在#newroom点击时,我们可以为每个“白名单”添加一个唯一的块 html部分:

<div id="chatroom"></div>
<div id="newroom">Add new room</div>

js part:

var counter = 0;

$('#newroom').click(function () {
   //making every whitelist unique here
   counter++;
   $('#chatroom').append("<div id='whitelist"+ counter +"'></div>");

});

// now you can access certain `whitelist` element by id:
var members = $("#whitelist3").text();  // exemplary case

答案 2 :(得分:0)

据我所知,您希望在白名单中创建子列表。一个建议是为什么不在白名单中创建属性,这些属性可以用标识每个白名单的可区分标准命名,然后所有这些属性的值可以是您的名称数组。

可能类似于

chatroom = {};
$('#newroom').click(function () {
   chatroom.whitelist.distinctPropertyOne = [];
   chatroom.whitelist.distinctPropertyOne.push = 'name1';
});

现在,您可以使用chatroom.whitelist.distinctPropertyOne

访问单独的白名单

希望这有帮助。

马南