我在事件处理程序中有这行javascript:
var value = event.currentTarget.value; //example: 9
然后我在switch语句中使用。
switch (value) {
case 9:
return 12;
case 12:
return 9;
}
问题在于"价值"是一个字符串而不是一个int。
我应该把它转换为int吗?
或者有没有办法将值作为int获取,就像用jQuery()说的那样?
或者我应该在switch语句中使用字符串吗?
答案 0 :(得分:8)
简单使用+value
,在变量前面注意+
,将变量转换为数字
switch (+value) {
case 9:
return 12;
case 12:
return 9;
}
答案 1 :(得分:8)
或者有没有办法将值作为int获取,就像用jQuery()说的那样?
当然,这几乎总是语言或环境中提供的功能。在JavaScript中,有四种方式:
parseInt
会将字符串解析为整数。 value = parseInt(value, 10)
会将其解析为十进制(例如,基数为10,我们大多数人使用的数字系统)。请注意,parseInt
将解析它在字符串开头找到的数字,忽略后面的任何内容。因此parseInt("1blah", 10)
为1
。
parseFloat
将字符串解析为可能小数(如1.2
)。它总是在10号基地工作。
Number
函数:value = Number(value)
。这需要整个字符串是一个数字,并通过查看字符串来确定它的基数:默认为十进制,但如果它以0x
开头,则将其解析为十六进制(基数为16),如果以0
开头,则在松散模式的某些引擎上,它被解析为八进制(基数为8)。没有办法强迫它使用特定的数字基础。
强制引擎通过对其应用数学运算符来隐式转换它;通常的是+
。所以:value = +value
。这与value = Number(value)
做同样的事情。奇怪的是,它在某些引擎上往往比Number
慢,但不够重要。
示例:Live Copy
parseInt("15", 10): 15
parseFloat("15"): 15
Number("15"): 15
+"15": 15
parseInt("1.4", 10): 1
parseFloat("1.4"): 1.4
Number("1.4"): 1.4
+"1.4": 1.4
parseInt("10 nifty things", 10): 10
parseFloat("10 nifty things"): 10
Number("10 nifty things"): NaN
+"10 nifty things": NaN
答案 2 :(得分:1)
试试这个。 parseInt()
函数会解析字符串并返回一个整数。
var value = parseInt(event.currentTarget.value, 10);