Ank*_*kur 10 javascript jquery nan
当点击类numObj的元素时,我想显示一个文本框.出于某种原因,我得到了NaNNaNaNaNNaNNaNaNaN,我希望在下面的代码中看到searchForm变量的结果.
我知道NaN代表的不是数字.我不明白为什么Javascript期待一个数字?我无法理解它为何如此关心.
$(".numObj").live('click',function(){
var preId = $(this).attr('preId');
var arrayPos = $(this).attr('numArrayPos');
alert(preId +" "+arrayPos);
var searchForm = "<table border='0' cellspacing='0' cellpadding='4' id='add-tag2'>"+
+"<tr class='normal'><td bgcolor='#EEEEEE' valign='bottom' nowrap='nowrap'><span class='normal-small'>"+
+"<input name='predicate-name2' type='text' class='normal' id='predicate-name2' size='4' />"+
+"</span></td>"+
+"<td bgcolor='#EEEEEE' valign='bottom' nowrap='nowrap'><span class='normal-small'><=</span></td>"+
+"<td bgcolor='#EEEEEE' valign='bottom' nowrap='nowrap'>x</td>"+
+"<td valign='bottom' bgcolor='#EEEEEE'><=</td>"+
+"<td valign='bottom' bgcolor='#EEEEEE'><span class='normal-small'>"+
+"<input type='text' name='object-object2' id='object-object2' class='normal' size='4' />"+
+"</span></td>"+
+"</tr>"+
+"</table>";
$(".numObj").filter("[preId='"+preId+"']").filter("[numArrayPos='"+arrayPos+"']").html(searchForm);
});
Run Code Online (Sandbox Code Playgroud)
生成的numObj类代码看起来像这样
<td><div class="numObj" preid="73" numarraypos="5"><span class="normal">585.0</span></div></td>
Run Code Online (Sandbox Code Playgroud)
And*_*y E 18
正如其他人所指出的那样,问题在于+运营商.除了连接字符串之外,它还用作数学加法.由于Javascript的动态类型,+在字符串上单独使用一元将导致字符串转换为数字:
+"12"; // -> 12
+"10" + +"12" // -> 22
Run Code Online (Sandbox Code Playgroud)
您的代码的几+行将操作符放在行的末尾和新行的开头.第二个+将被视为一元数学加法,并将尝试将字符串转换为数字.考虑以下:
"Hello" +
+ "World" // -> "HelloNaN"
Run Code Online (Sandbox Code Playgroud)
Gle*_*ord 10
您有多个加号运算符彼此相邻.
var searchForm = "<table border='0' cellspacing='0' cellpadding='4' id='add-tag2'>"+
+"<tr class='normal'><td bgcolor='#EEEEEE' valign='bottom' nowrap='nowrap'><span class='normal-small'>"+
Run Code Online (Sandbox Code Playgroud)
请注意,第一行末尾有一个加号运算符,最后一行开头有一个加号运算符.删除其中一个加号运算符(对于每一行),你可能会摆脱错误.