2014-09-29 87 views
1

考虑下面的代码: HTML:隐藏栏元素与价值数总是返回字符串

<input type="hidden" value=3 name="hello" id="test"/> 
<input type="button" value="test me!" onclick="checkType();" /> 

JS:

function checkType(){ 
    var num = document.getElementById("test").value; 
    alert(typeof num + ": " + num); 

} 

或参阅本fiddle

正如你所看到的,我为HTML隐藏元素的value属性放置了一个数字。 我研究过关于这件事,除了使用typeof函数来展示我看到的东西是什么样的数据类型。

我不知道它是否也是有效的,无论如何,在值属性中放置一个未联系的号码。

,但我想完成的事情是,存储从UI隐藏掉一些,然后把它收回,并正确地显示它的编号回到屏幕..

了目前正在寻找3天左右,而橡皮鸭子*迄今还没有任何效果。 而我的办公室里没有JS大师。

最好的问候,

+6

所有的输入值都是字符串。无论您为其分配什么值,都会将其转换为字符串。 – 2014-09-29 03:18:56

+0

将其转换回整数。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt – beaglebets 2014-09-29 03:22:54

+0

嗨,先生,你有什么想法,我怎么能动态转换东西int,当他们是int,否则作为字符串。使用typeof函数只是失败 – 2014-09-29 03:38:56

回答

5

正如p.s.w.g说,输入值是字符串。如果你真的想将它转换为数字类型,只需使用一元+运算符。

var num = +document.getElementById("test").value; 

更新小提琴这里:http://jsfiddle.net/0h61xwkg/3/

+0

你有什么想法如何动态测试隐藏字段中的值是数字还是字符串? – 2014-09-29 03:31:20

+0

@李镇你可以使用一个正则表达式,然后将其转换为数字。 '/^\ d + $ /'如果你只关心整数。如果你想测试浮点数,它会稍微复杂一些。/^\ d * \。\ d + $ |^\ d + \。\ d * $ /'。 – 2014-09-29 03:53:01

+0

对于可能绊倒的其他读者:如果要从隐藏元素的属性值(或者我猜想的任何元素)知道值是数字还是字符串,请使用“+”一元运算符。它与字符串一起使用时返回“NaN”,否则返回数字。看看这个小提琴:http://jsfiddle.net/0h61xwkg/5/ – 2014-09-29 03:55:26