2014-10-05 2 views
0

여기에서 코드를 재사용하려고 시도하고 있습니다. Edit a variable within an array은 비슷하지만 덜 복잡한 것을 만듭니다. 나는 버튼을 클릭하면,JavaScript를 사용하여 배열을 사용하여 텍스트 추가

$('#output').html(WorkTs[Math.floor(Math.random() * 4)].WorkT()); 

을하지만 :

은 내가 '작업'기능 제작 :

var WorkT = function(gain,loss,message) { 
    coins += this.gain; 
    coins -= this.loss; 
    this.message = message; 
} 


workT1 = new WorkT(30,0,'<span class="red">+ 30 Gold Coins'); 
workT2 = new WorkT(15,0,'<span class="red">+ 15 Gold Coins'); 
workT3 = new WorkT(80,0,'<span class="red">+ 80 Gold Coins'); 
workT4 = new WorkT(1,0,'<span class="red">+ 1 Gold Coin'); 

WorkTs = [workT1,workT2,workT3,workT4]; 

을 그리고 나는이 내 코드에서 나중에 호출하기 위해 노력하고있어 아무것도 바뀌지 않습니다. 아무도 그 이유를 말할 수 있습니까?

+3

당신은 당신의'WorkT' 변수를 덮어 쓰는 것입니다. – YoannM

+0

@YoannM, 당신 말이 맞아. 배열에서 'S'를 잊어 버렸습니다. 죄송합니다. – Asteria

답변

2

귀하의 WorkT 인스턴스에는 WorkT() 기능이 없습니다.

당신은 당신의 WorkT '클래스'내부 WorkT (또는 다른)라는 이름의 함수를 선언해야합니다

var WorkT = function(gain,loss,message) { 
    //... 
    this.work = function() { 
     //Do Something. 
    } 
} 

또는 당신은 당신의 인스턴스를 호출 할 수 없습니다 :

$('#output').html(WorkT[Math.floor(Math.random() * 4)].work()); 


모두 달성하려는 목표에 따라 다릅니다.

+0

감사합니다, 나는 그걸 보았다고 믿을 수 없어! – Asteria

0

코드에 많은 오류가 있습니다.

  1. WorkT 컨스트럭터의 coins은 무엇입니까? 글로벌 변수입니까 아니면 this.coins을 원하십니까?
  2. this.gainthis.loss가 존재하지 않습니다. 그들은 단지 gainloss입니다.
  3. WorkT 클래스에는 WorkT이라는 기능이 없습니다. 함수를 정의 할 수도 있습니다.

coins이 글로벌 변수라고 가정하면 코드가 어떻게 생겼을 것입니다.

var WorkT = function(gain,loss,message) { 
    coins += gain; 
    coins -= loss; 
    this.message = message; 

    this.work = function(){ 
     //Do something here. 
    } 
} 

그리고,

$('#output').html(WorkTs[Math.floor(Math.random() * 4)].work()); 
관련 문제