Javascript函数未返回所需结果
Javascript functions not returning desired result
我有一个函数,它包含一个switch语句,用于返回基于输入整数的字符串。为了简洁起见,我把它缩短了。超过1
的大小写无关紧要,因为大小写整数只是递增并返回不同的字符串值。设置是相同的。
function idToGame(id) { switch (id) { case 1: return 'loz';break; } }
每当我用谷歌Chrome控制台测试它时,它都能正常工作。
idToGame(1)
返回loz
因此,让我们以变量game
为例。下面,我们假设"pm_game"的值为1。
var game = document.getElementById('pm_game').value;
因此,game
被设置为1。
这是奇怪的部分。每当我尝试使用这个:(注意:下面的值是1(
var game = idToGame(document.getElementById('pm_game').value);
它将game
设置为未定义的。
我是不是错过了什么?当它真的应该是loz时,为什么它会变成未定义?
当您获得任何输入字段的值时,如下所示:
var game = document.getElementById('pm_game').value;
返回的结果总是一个字符串,而不是您期望的数字。因此,为了使其工作,您需要将字符串强制转换为数字。例如使用parseInt
:
var game = parseInt(document.getElementById('pm_game').value, 10);
// or game = + document.getElementById('pm_game').value;
// or game = Number(document.getElementById('pm_game').value);
或者在切换之前将parseInt
转换为id2game
功能。
Switch使用===运算符。其中1不等于"1"。
刚刚在控制台中尝试过,您需要对其进行锥虫扫描。下面是一个示例。
var f = function(id) {
switch (parseInt(id))
{
case 1:
return 'loz';
break;
}
}
使用旧函数:f(1(将返回'loz',但f('1'(没有。
我更喜欢比较"1"而不是1,以避免解析。但我不确定这是否是你想要的:
var f = function(id) {
switch (id)
{
case '1':
return 'loz';
break;
}
}
===
(,因此1
(Number(被认为不等于'1'
(String(。两种选择:
- 尝试
switch(parseInt(id))
执行从字符串到整数的转换 - 如果您不想执行转换,只需在每个大小写值周围添加引号,如下所示:
case '1'
此外,出于调试目的,您可以使用typeof
在控制台中打印类型。
- 是否可以将JXBrowser显示的JS确认对话框的结果返回到调用它的JS部分
- 将字符串结果返回到表单元格中的新行中
- 如何从批处理文件调用一个带有2个参数的java脚本函数,并将结果返回到环境变量
- 使用 JSON 和 ExtJS 将 MPDF 结果返回给浏览器
- 将信息结果返回到多个输入字段
- 如何将变量从javascript发送到php并将结果返回给JS
- 将 JavaScript 变量传递给 PHP,并将 PHP 结果返回给 JavaScript 变量
- 当没有结果返回 JavaScript 搜索时显示消息
- 加载相同的结果返回按钮
- 如果搜索框位于_SiteLayout页(在页眉 DIV 中),如何将搜索结果返回给用户
- MVC C#中的自定义操作结果返回特定视图
- 使用javascript/lodash对特定键的相同值进行分组,并对其进行计数,然后将结果返回到数组
- 如何使用javascript将循环结果返回到列中
- 结果返回为“未定义”
- 搜索未检测到结果返回-Selectize.js
- 调用一个打开活动并将活动结果返回给javascript的java函数
- 将PHP结果返回到原始html页面
- ASP.. NET MVC控制器结果返回到视图
- 如何通过AJAX传递值来更改SQL搜索查询并将结果返回给HTML ?
- Asp.net MVC或javascript将另一个页面的结果返回给方法