从text()返回的jQuery值在添加到数组时会导致无法识别的表达式错误

时间:2017-10-27 14:52:22

标签: javascript jquery arrays

我有以下代码:

$(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)

我理解这是由于文本传递带有括号的问题而导致的基础知识,但是想知道为什么会发生这种情况的详细信息以及如何解决这个/最佳做法以避免像这样的错误。

4 个答案:

答案 0 :(得分:3)

使用map代替each

&#13;
&#13;
// Empty aarray to store list of headings
    var tableHeadings = $('#AdvancedTable thead > tr > th').map(function () {
      return this.innerHTML;
    }).get();
&#13;
&#13;
&#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())