2012-07-18 7 views
0

괜찮습니다. 사물 목록을 작성하는 데 사용하는 사용자 정의 오브젝트를 작성했습니다. 이 사용자 지정 개체의 기능 중 하나는 개체를 목록에 추가하는 것입니다. 이 목록에는 목록에 추가 된 항목의 수를 추적하는 각기 다른 요소에 할당 한 값이 있습니다. 예를 들면 :자바 스크립트로 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' 키워드를 사용하고 시도? 그렇게하면 고유 한 개체가 있어야합니다. –

+0

@arxanas 예, 다음을 통해 인스턴스를 생성합니다. var object1 = new Thing (0, "blah"); –

+0

문제는 카운터 범위에 대한 ID가 개체의 모든 다른 인스턴스에 대해 동일하므로 각 개체마다 ID 이름을 변경하는 올바른 방법을 알아야 개체가 동일한 ID가 카운트 값과 관련되지 않습니다. . –

답변

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

아무 것도 해결하지 못합니다. –

+0

당신은 단지 권리에 너의 범위를 추가하고 싶니? – Kishore

+0

아니, 내가 변경하려면, 그 개체의 각 인스턴스에 대해 다른 스팬의 ID. –

관련 문제