.html()jQuery函数返回NaN

Dav*_*ave 1 javascript jquery

我有

<div id="tablePlace"></div>
Run Code Online (Sandbox Code Playgroud)

if ($('#radioOne').is(':checked') == true) {
         $("#tablePlace").html(" ");
         $("#tablePlace").append(htmlTable); //htmlTable is a string that contains an html table code
         loadNestedTable(temp);
    }
Run Code Online (Sandbox Code Playgroud)

它有效但在div中我找到了NaN.如果我评论$("#tablePlace").append(htmlTable);,NaN不会出现.

为什么?

UPDATE

htmlValue代码:

var tab = '<table id="decretoSingolo">'+
+'<thead>' 
+   '<tr>'
+       '<th>Ente</th>'
+       '<th>CUP</th>'
+       '<th>Decreto impegno</th>'
+       '<th>Data decreto impegno</th>'
+       '<th>Importo impegno</th>'
+       '<th>Finanziato MIUR</th>'
+       '<th>Importo pagato</th>'
+       '<th>Importo in pagamento</th>'
+   '</tr>'
+ '</thead>'
+   '<tbody>'
+   '</tbody>'
+'</table>'

+'<div style="display:none">'    
+   '<table id="dettagliDecretoSingolo">'
+   '<thead>' 
+           '<tr>'
+               '<th>Progressivo pagamento</th>'
+               '<th>Data decreto</th>'
+               '<th>Numero decreto pagamento</th>'
+               '<th>Tipo pagamento</th>'
+               '<th>Importo in pagamento</th>'
+               '<th>Nota decreto</th>'
+           '</tr>'
+       '</thead>'
+       '<tbody>'
+       '</tbody>'
+   '</table>'
+'</div>';
Run Code Online (Sandbox Code Playgroud)

htmlTable值:

<table id="myTable">NaN<tr><th>Ente</th><th>CUP</th><th>Decreto impegno</th><th>Data decreto impegno</th><th>Importo impegno</th><th>Finanziato</th><th>Importo pagato</th><th>Importo in pagamento</th></tr></thead><tbody></tbody></table><div style="display:none"><table id="myTableDetails"><thead><tr><th>Progressivo pagamento</th><th>Data decreto</th><th>Numero decreto pagamento</th><th>Tipo pagamento</th><th>Importo</th><th>Nota</th></tr></thead><tbody></tbody></table></div>
Run Code Online (Sandbox Code Playgroud)

NaN出现在.append()之后.htmlTable代码有问题吗?

T.J*_*der 6

问题是+你的代码中有一个一元:

   var tab = '<table id="decretoSingolo">'+
   +'<thead>' 
// ^--- Here
Run Code Online (Sandbox Code Playgroud)

要解决这个问题:

删除其中一个+.通常最好使用+前一行的末尾,以避免自动分号插入的问题.

为什么你得到NaN:

这是一个一元,+因为它跟+在前一行的末尾,它们之间有空格(所以它不像++我最初建议的那样).

那个一元+会尝试取其操作数(跟随它的字符串)并将其转换为数字,如果无法完成则会产生NaN.然后+前一行的操作数是一个字符串和一个数字,因此加法运算符将字符串转换为数字并将其添加到NaN(产生NaN).

你可以在这里看到它:

var tab = '<table id="decretoSingolo">'+
+'<thead>' 
+   '<tr>';
document.body.innerHTML = tab;
Run Code Online (Sandbox Code Playgroud)


旁注:没有必要这样做.html(" "),然后.append(htmlTable)就是这么做.html(htmlTable).