无法在javascript中追加到表格。错误:无法分配给函数结果

时间:2014-06-13 00:36:55

标签: javascript jquery asp.net ajax

我使用ajax从Web API获取项目,然后尝试将该项目的属性分配给表格:

 function find() {
        var id = $('#contentID').val();
        $.getJSON(uri + '/' + id)
            .done(function (data) {
             fillTable(data);
                                })
            .fail(function (jqXHR, textStatus, err) {
                $('#content').text('Error: ' + err);
            });
    }


    function fillTable(item) {
      document.getElementById("mybody") += "<td id = \"td1\" runat=\"server\">" + item.contentType + "</td> <td id=\"td2\" runat=\"server\">" + item.contentID + "</td></tr>";
    }

我在html中有这个表:

 <table id="example" class="responstable">
         <thead>
            <tr>
                <th data-th="Driver details"><span>Timestamp</span></th>
                <th>Content Type</th>
                <th>Task Name</th>
                <th>Task Version</th>
                <th>Task State</th>
            </tr>
        </thead>

        <tbody id="mybody" runat="server">
            <tr>

            </tr>
        </tbody>

    </table>

我知道我正在获取JSON对象,因为我将其属性打印到屏幕上并且打印得很好。我不明白为什么javascript不会将它们附加到表中。

1 个答案:

答案 0 :(得分:2)

赋值函数调用的结果没有意义,并且被禁止,并且有一个运行时异常。

=(赋值)运算符以及+=等派生词需要运算符的左侧是Reference Specification Type的表达式。也就是说,lhs = e仅在与&#34;变量或属性表达式&#34;一起使用时才有效。为lhs

  

引用类型用于解释诸如delete,typeof和赋值运算符[includes =,+ =等]之类的运算符的行为。例如,赋值的左侧操作数应生成引用[规范类型表达式]。

JavaScript可以将值分配回适当的变量/属性。如果无法进行此类分配,则会抛出运行时错误,例如尝试在=运算符的左侧使用函数调用时。

(这是我对++处理的答案的改编。)


此特定实例可通过以下满足上述要求来解决,因为innerHTML属性

 var elm = document.getElementById("mybody");
 elm.innerHTML += "the new stuff";

(但是,更好的是使用正确的DOM操作,而不是HTML修改。)