2017-06-03 76 views
0

這是我的代碼,不幸的是不工作。JS需要每1.5秒增加一個值

它從html(600)中取值,然後除以它(var f = 600/20)。它應該啓動onclick按鈕(它已經有onclick功能)。

function enemy() { 
 
    var iFrequency = 2500; 
 
    var myInterval = 0; 
 
    var e = document.getElementById('stre').innerHTML; 
 
    var f = e/20; 
 

 
    function startLoop() { 
 
    if (myInterval > 0) clearInterval(myInterval); // stop 
 
    myInterval = setInterval("doSomething()", iFrequency); 
 
    } 
 

 
    function doSomething() { 
 
    var label = document.getElementById('wallvalue'); 
 
    label.innerHTML = parseInt(label.innerHTML) + f; 
 
    document.getElementById('wallvalue').style.color = 'red'; 
 
    document.getElementById('resultr').innerHTML = f; 
 
    document.getElementById('resultr').style.color = 'red'; 
 
    document.getElementById('resultrc').innerHTML = f; 
 
    document.getElementById('resultrc').style.color = 'red'; 
 
    }
<BUTTON class="doit" onclick="damagec(); iFrequency+=1000; startLoop(); return false;"><b>FIGHT</b></BUTTON>

+0

我讓你成爲一個片段。現在,添加缺少的HTML AND腳本 - 也是'setInterval(doSomething,iFrequency);' – mplungjan

+4

'startLoop'沒有在全局範圍中定義,因此內聯事件處理程序無法調用該函數。至少有一件事不起作用。請提供[mcve]。 –

+1

'damagec沒有定義' – prasanth

回答

0

您似乎已經嘗試做一些繼承,但你的代碼是不以任何方式工作。你可以這樣做:

function enemy(name) { // a constructor for our enemy 
 
    this.name=name; 
 
    this.iFrequency = 2500; 
 
    this.myInterval = false; 
 
    this.el=document.createElement("div"); 
 
    document.body.appendChild(this.el); 
 
    this.f = 1; 
 
} 
 

 
enemy.prototype={ //functions for all enemys 
 
    startLoop:function() { 
 
    if (this.myInterval) clearInterval(this.myInterval); // stop 
 
    this.myInterval = setInterval(this.doSomething.bind(this), this.iFrequency); 
 
    }, 
 
    doSomething:function() { 
 
    this.el.innerHTML = this.name+":"+(++this.f); 
 
    this.el.style.color = 'red'; 
 
    } 
 
}; 
 

 
var Monster=new enemy("Monster");//create a new Enemey 
 
var button=document.createElement("button"); 
 
button.textContent="Start Monster"; 
 
document.body.appendChild(button); 
 

 
button.onclick=Monster.startLoop.bind(Monster);

0

我設法把它完成。謝謝大家的答案!

function enemy(){ 
    var e=600; 
    var f=600/20; 
    document.getElementById('resultr').innerHTML = f; 
    document.getElementById('resultr').style.color = 'red'; 
    document.getElementById('resultrc').innerHTML = f; 
    document.getElementById('resultrc').style.color = 'red'; 

    var intervalID = window.setInterval(myCallback, 3000); 

    function myCallback() { 
    var label = document.getElementById('wallvalue'); 
    label.innerHTML = parseInt(label.innerHTML) + f; 
    document.getElementById('wallvalue').style.color = 'red'; 
    } 
}