如何将JavaScript中的对象与HTML元素关联或关联?

时间:2011-09-10 15:38:41

标签: javascript html object associations relationship

如何将JavaScript中的对象关联或关联到HTML元素?

对于数组中的每个对象,我会根据该对象生成一个复选框输入元素。

如果我添加一个事件监听器来捕获复选框更改,我该如何检索与该元素关联的对象?

4 个答案:

答案 0 :(得分:4)

正如其他答案所指出的那样,为每个DOM节点生成唯一的ID允许您将它们用作对象中的键。

另一种可能性是许多框架提供了用于将数据分配给DOM元素的实用程序。例如,在jQuery中,您可以通过编写$(checkbox).data('mydata', obj)或在YUI Y.one(checkbox).setData('mydata', obj)中执行此操作。

答案 1 :(得分:1)

您为每个复选框提供渐进式ID,从“checkbox0”开始,当您单击复选框时,检查相对ID号,它对应于数组[x]中的对象。

这是一个非常简单的example

答案 2 :(得分:1)

您可以为每个复选框生成ID,并将ID存储在相应的对象中。然后,在事件处理程序中,您可以获取已更改复选框的ID,并通过迭代数组来找到基于该对象的相应对象。

为了更容易找到对象,您还可以将ID映射到对象(例如objectsByID[someID] = someObject)。使用这种方法,您甚至不必遍历数组。

如何创建objectsByID地图的示例:

var objectsByID = {};

for (var i = 0; i < objects.length; i++) {
    var id = "checkbox_" + i;

    var checkbox = document.createElement("input");
    checkbox.setAttribute("type", "checkbox");
    checkbox.setAttribute("id", id);
    // ...

    objectsByID[id] = objects[i];
}

答案 3 :(得分:1)

创建一个全局对象,在创建复选框时存储其他对象,由唯一名称标识。将checkbox元素的 name id 属性设置为此唯一名称。

var source = [];
var data = []; //Your data
var appendTo = document.body;//Anywhere
for(var i=0; i<data.length;i++){
  var identifier = "chk"+i;
  var inp = document.createElement("input");
  inp.type = "checkbox";
  inp.name = identifier;//.name or .id - it's up to your preference
  inp.addEventListener("change", function(ev){
    if(this.checked){
      callback(source[this.name]);//calls function callback, passing the original object as an argument.
    }
  }, true);
  appendTo.appendChild(inp);
  source[identifier] = ...//your object.
}
相关问题