JavaScript拼接HTML代码至变量时渲染显示NaN问题咨询
问题诱因
- 核心原因是字符串拼接时多写了冗余的一元加号运算符:在拼接下拉选项菜单容器的代码段中,上一行字符串末尾已经写了用于字符串拼接的
+,下一行test变量前又额外多写了一个+,JS引擎会将这个多余的前缀+识别为数值强制转换运算符,尝试把后续的操作数转为Number类型。 test变量存储的是循环拼接生成的HTML选项字符串,不属于合法数字格式,类型转换结果为NaN,最终拼接生成的HTML对应位置就会显示NaN,无法正常渲染预期的下拉选项内容。
修复方案
直接删除test变量前多余的那个+即可,修正后的代码如下:
var test = ""; for (var i = 0; i < controlResponse.classifications.length; i++) { test += '<div role="option" aria-checked="false" class="select item" style="pointer-events: all;"><span class="text">' + controlResponse.classifications[i].name + ' </span></div>'; } for (var i = 0; i < controlResponse.fileList.length; i++) { var htmlCode = '<div class="row"> '+ ' <div class= "ten wide computer sixteen wide mobile ten wide tablet column"> '+ ' <h5 class="ui header"> '+ ' <i aria-hidden="true" class="file word outline large icon fa-fw"></i> '+ ' <div class="content">outlook_testler.docx</div> '+ ' </h5> '+ ' </div > <div class="six wide computer sixteen wide mobile six wide tablet column"> '+ ' <div role="listbox" aria-expanded="false" class="ui selection dropdown" tabindex="0" style="float: right;"> '+ ' <div aria-atomic="true" aria-live="polite" role="alert" class="divider default text">Classification</div><i aria-hidden="true" class="dropdown icon"></i> '+ ' <div class="menu transition classifications">' + test + ' </div> ' + ' </div> '+ ' </div> '+ ' </div>'; $("#classificationModalList").append(htmlCode); }
内容的提问来源于stack exchange,提问作者Mehmet Ceylan
相关产品推荐
相关产品推荐

