.html()jQuery函数返回NaN

时间:2016-01-07 10:17:59

标签: javascript jquery

我有

<div id="tablePlace"></div>

并且

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

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

为什么?

更新

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>';

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>

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

3 个答案:

答案 0 :(得分:7)

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

   var tab = '<table id="decretoSingolo">'+
   +'<thead>' 
// ^--- Here

要修复它:

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

为什么你得到NaN

这是一元+因为它跟在前一行末尾的+之后,它们之间有空格(所以它不是我最初建议的++。) / p>

一元+将尝试获取其操作数(后面的字符串)并将其转换为数字,如果无法完成,则会产生NaN。然后前一行+的操作数是一个字符串和一个数字,因此加法运算符将字符串转换为数字并将其添加到NaN(产生NaN)。< / p>

你可以在这里看到:

var tab = '<table id="decretoSingolo">'+
+'<thead>' 
+   '<tr>';
document.body.innerHTML = tab;

旁注:没有必要.html(" ")然后.append(htmlTable),只需执行.html(htmlTable)

答案 1 :(得分:2)

您在以下行中有双加号+,请删除一个:

var tabellaDecretoSingolo = '<table id="decretoSingolo">'+
+'<thead>' 
+   '<tr>'

应该是:

var tabellaDecretoSingolo = '<table id="decretoSingolo">'
+'<thead>' 
+   '<tr>'

希望这有帮助。

答案 2 :(得分:0)

首先,您可以优化您的javascript:

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

通过

if ($('#radioOne').is(':checked') == true) {
     $("#tablePlace").html(htmlTable); //html() replace all content of your element child. 
     loadNestedTable(temp);
}

此外,定义“htmlTable”值

时出现问题
<table id="myTable">NaN<tr> [...]

检查“&gt;”后如果你不添加NAN var ...

你的元素