HTML中的Javascript增量值

HTML中的Javascript增量值,javascript,increment,Javascript,Increment,我对JavaScript一无所知。我试图在HTML中增加一个变量,但它不起作用。我的语法错了吗 <script> function rps() { computerScore.value++; computerScore.innerHTML = computerScore.value; } </script> <html> <b>computer score:</b><p id="computerScore" value=

我对JavaScript一无所知。我试图在HTML中增加一个变量,但它不起作用。我的语法错了吗

<script>
function rps() {
computerScore.value++;
computerScore.innerHTML = computerScore.value;
}
 </script>   
<html>
<b>computer score:</b><p id="computerScore" value="0">-</p>
<button type="button" onclick="rps()">Go</button><br>
</html>

函数rps(){
computerScore.value++;
computerScore.innerHTML=computerScore.value;
}
计算机分数:

-



不是
标记的有效属性

我想你想要的是:

function rps() {
    var computerScore = document.getElementById('computerScore');
    var number = computerScore.innerHTML;
    number++;
    computerScore.innerHTML = number;
}

computerScore:

0

有几个问题:

  • 在大多数浏览器上,不能将元素id作为全局属性
  • 属性并不总是元素的属性(值只是输入元素的属性)
您可以这样做:

function rps() {
   // fetch the element :
   var element = document.getElementById('computerScore'); 

   // get the attribute, parse it and increment it :
   value = parseInt(element.getAttribute('value'), 10)+1; 

   // stores the incremented value :
   element.setAttribute('value', value);

   // and change the innerHTML (conversion to string is implicit)
   element.innerHTML = value;
}
有几个问题:

  • computerScore
    什么都不是;您可能需要
    document.getElementById('computerScore')
  • 上的
    无效。使用
    数据值
    或其他东西(或

  • 请注意,
    dataset.value
    是一个字符串,但是
    ++
    将其强制为整数


    我还建议使用事件绑定而不是事件属性,例如
    按钮。addEventLister

    不要尝试,它有一个函数用于此。即使您寻找JS解决方案,也值得注意的是您可以!应该在DOMready之后调用
    getElementById
    ,即在
    rps
    @mplungjan
    数据集中
    不符合旧的IE标准,应该使用
    getAttribute
    实际上数字是一个字符串,直到++所以也许数字=+computerscore.innerHTML更正确你在增加innerText值时没有看到它是否是一个实际的数字?我认为DOM不能区分BTW数字和字符串。
    var elm = whatever //assuming you select your element using the DOM
    // update value
    elm.innerHTML = +elm.innerHTML + 1;
    
    var computerScore = document.getElementById('computerScore');
    function rps() {
        computerScore.dataset.value++;
        computerScore.innerHTML = computerScore.dataset.value;
    }
    
    var elm = whatever //assuming you select your element using the DOM
    // update value
    elm.innerHTML = +elm.innerHTML + 1;
    
    The best option will be to pass in an event object from the rps() method in the HtML,       like this: rps(event).
    Then retrieve it from the Javascript method like this:
    function rps(event) {
    var computerScore = event.CurrentTarget.innerText;
    computerScore++;
    computerScore = number;
    }