显示NoN而不是城市名称。我试过以下代码 -
<script type="text/javascript" language="javascript" >
function submitcity(c){
document.getElementById("ct").setAttribute('value',+c);//displaying NoN
//document.cityform.submit();
alert(c);
}</script>
在身体
<img src="images/reset.jpg" width="80" height="24" onclick="submitcity('bhopal');" />
<form action="" method="post" name="cityform" style="display:none;">
<input type="hidden" name="city" id="ct" value="" /></form>
答案 0 :(得分:5)
+c
在值之前放置+
将尝试将其强制转换为数字。你没有传递号码。你看到的是NaN
。
从变量后面删除+
。
document.getElementById("ct").setAttribute('value',+c);
变为
document.getElementById("ct").setAttribute('value',c);
答案 1 :(得分:3)
从+c
document.getElementById("ct").setAttribute('value',+c);
您正在尝试将强制转换字符串(不代表数字)键入数字值,前缀为+
,因此看到NaN
(非数字),它应该是:
document.getElementById("ct").setAttribute('value',c);
+
是一个一元运算符,用于将类型转换为数值。
一元加运算符在其操作数之前,并计算其操作数,但尝试将其转换为数字(如果尚未)。例如,y = + x取x的值并将其赋给y;也就是说,如果x为3,y将得到值3,x将保留值3;但如果x是字符串“3”,y也会得到值3.尽管一元否定( - )也可以转换非数字,但是一元加号是将某些东西转换为数字的最快和最优选的方法,因为它不是对号码执行任何其他操作。它可以转换整数和浮点数的字符串表示形式,以及非字符串值true,false和null。支持十进制和十六进制(“0x” - 前缀)格式的整数。支持负数(但不支持十六进制)。如果它无法解析特定值,它将评估为NaN。
<强> Fiddle 强>
答案 2 :(得分:1)
试试这个,
function submitcity(c){
document.getElementById("ct").setAttribute('value',c);//remove + sign before c
//document.cityform.submit();
alert(c);
}