Jquery数学加法

时间:2011-07-21 01:27:14

标签: jquery math

我正在尝试通过jquery事件添加,而我正在获取NaN。我错过了什么?

   <input type="hidden" id="skillcount" name="skillcount" value="3" onchange="valueadd(this)"/>

   function valueadd(ok){
var value=parseFloat($(this).val())+1;
}

4 个答案:

答案 0 :(得分:6)

代码应为:

function valueadd(ok){
  // "this" inside here refers to the window
  var value=parseFloat(ok.value)+1;
} 

内联onchange实际上是一个匿名函数:

function() {
   //"this" inside here refers to the element
   valueadd(this);
}

所以“this”是一个在valueadd范围内被称为“ok”的参数。正如其他人所说,你可能想要使用jquery的绑定,因此valueadd中的“this”将指向该元素。

答案 1 :(得分:5)

this是JavaScript中的保留字,因此您无法在函数参数签名中使用它。

我可能会将该代码更改为...

$('#skillcount').change(function() {
    var value = parseFloat($(this).val()) + 1;
});

jsFiddle

...并删除内联事件处理程序。

要检查parseFloat()是否返回NaN,请使用isNaN()

答案 2 :(得分:3)

你应该能够这样做:

<input type="hidden" id="skillcount" name="skillcount" value="3" onchange="valueadd()"/>

function valueadd()
{
    var value=parseFloat(this.value)+1;
}

答案 3 :(得分:1)

  1. 使用jQuery分配您的行为,因为您可以使用它并且正在使用它。不要使用内联事件处理程序
  2. 由jQuery绑定的函数在发生事件的元素的范围内执行。这意味着this是元素。
  3. this不能用作参数名称或除了访问范围内对象以外的任何内容。
  4. 使用:

    <input type="hidden" id="skillcount" name="skillcount" value="3" />
    
    <script type="text/javascript">
        $( '#skillcount' ).bind( 'change', function()
        {
            var value = parseFloat( $( this ).val() ) + 1;
        } );
    </script>