2012-07-18 75 views
0

好的。 我创建了一个自定义对象,用于构建事物列表。此自定义对象的其中一个功能是将对象添加到列表中。在此列表中,我为每个不同的元素分配了一个值,用于跟踪该项目已添加到列表中的多少项。如:使用Javascript动态更改HTML元素的ID

(3)对象#1
(2)对象#2

3,当然是该对象的 '计数' 值的2。我的问题是,我通过调用动态创建列表:

function Thing(count, value) 
{ 
    this.count=count; 
    this.value=value; 
} 

Thing.prototype.addToList = function() 
{ 
if (this.count == 0) 
{ 
    this.count++; 

    var list = document.getElementById("blah"); 
    var li = document.createElement("li"); 
    var interior = "<span id='counter'>("+this.count+")</span>"; 
    li.innerHTML = interior; 
    list.appendChild(li); 
} 
else 
{ 
    this.count++; 
    var countInc = document.getElementById("counter"); 
    countInc.innerHTML = "("+this.count+")"; 
} 
} 

这工作得很好,但如果我用不同的计数值添加多个对象,就没有办法来区分他们,并因此,列表中的第一个“计数器”跨度会随着最近添加的对象的计数值而改变。所有其他计数值保持不变(1)。我曾尝试过:

var interior = "<span id='counter"+this.value+"'>("+this.count+")</span>"; 

每次尝试创建一个唯一的ID,但这不起作用。基本上,我想知道如何创建新的ID值,每次我实例化一个新的对象。

+0

您使用的是'new'关键字?这应该确保你有独特的对象。 – 2012-07-18 19:20:27

+0

@arxanas是的,我通过实例化它们: var object1 = new Thing(0,“blah”); – 2012-07-18 19:23:16

+0

问题是计数器跨度的id对于对象的所有不同实例都是相同的,只需要知道更改每个不同对象的id名称的正确方法,因此没有两个对象具有与其计数值关联的相同id 。 – 2012-07-18 19:28:27

回答

1

试试这个

var list = document.getElementById("blah"); 
var li = document.createElement("li"); 
var interior = "<span id='counter-"+this.count+"'>("+this.count+")</span>"; 
li.innerHTML = interior; 
+0

不解决任何问题。 – 2012-07-18 19:25:25

+0

你只是想将你的跨度附加到li上吗? – Kishore 2012-07-18 19:25:57

+0

不,我想改变,跨度的id,因此它对Thing对象的每个实例都是不同的。 – 2012-07-18 19:27:14