我有以下代码:
$(document).ready(function () {
debugger;
// Empty aarray to store list of headings
var tableHeadings = [];
// For each heading present add it to the array (ordered)
$('#AdvancedTable thead > tr > th').each(function () {
//console.log($(this).text());
$(tableHeadings).add($(this).text());
});
// For each row in the table, add the heading text to the start of each cell
$('#AdvancedTable tbody > tr > td').each(function (index) {
$(this).prepend('<span class="visible-xs">' + tableHeadings[index] + '</span>');
})
});
但是,我存储值的表标题之一包含文本&#34;长度(L1)&#34;。我在控制台中收到以下错误:
未捕获错误:语法错误,已识别表达式:长度(L1)
我理解这是由于文本传递带有括号的问题而导致的基础知识,但是想知道为什么会发生这种情况的详细信息以及如何解决这个/最佳做法以避免像这样的错误。
答案 0 :(得分:3)
使用map
代替each
。
// Empty aarray to store list of headings
var tableHeadings = $('#AdvancedTable thead > tr > th').map(function () {
return this.innerHTML;
}).get();
&#13;
您正在创建一个空数组,迭代元素并将它们添加到数组中。这基本上是为了映射已经完成的轮子重新发明轮子。
答案 1 :(得分:3)
tableHeadings是一个简单的数组,因此你可以使用push函数来增加值:
$(document).ready(function () {
let tableHeadings = [];
$('#AdvancedTable thead > tr > th').each( (index, item) => {
tableHeadings.push($(item).text())
});
$('#AdvancedTable tbody > tr > td').each( (index, item) => {
$(item).prepend('<span class="visible-xs">' + tableHeadings[index] + '</span>');
})
});
答案 2 :(得分:0)
不确定为什么要使用JQuery将项添加到列表中;也许试试:
tableHeadings.push($(this).text());
而不是原始行:
$(tableHeadings).add($(this).text());
答案 3 :(得分:0)
$(tableHeadings).add($(this).text());
需要
tableHeadings.push($(this).text())