我正在尝试通过jquery事件添加,而我正在获取NaN。我错过了什么?
<input type="hidden" id="skillcount" name="skillcount" value="3" onchange="valueadd(this)"/>
function valueadd(ok){
var value=parseFloat($(this).val())+1;
}
答案 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;
});
...并删除内联事件处理程序。
要检查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)
this
是元素。this
不能用作参数名称或除了访问范围内对象以外的任何内容。使用:
<input type="hidden" id="skillcount" name="skillcount" value="3" />
<script type="text/javascript">
$( '#skillcount' ).bind( 'change', function()
{
var value = parseFloat( $( this ).val() ) + 1;
} );
</script>