无法在javascript中追加到表.错误:无法赋值给函数结果

Unable to append to table within javascript. Error: Cannot assign to a function result

本文关键字:赋值 函数 结果 错误 javascript 追加      更新时间:2023-09-26

我使用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不会将它们附加到表中。

赋值给函数调用的结果是没有意义的,是被禁止的,并会产生运行时异常。

=(赋值)运算符,以及+=之类的导数要求运算符的左边是引用规范类型的表达式。也就是说,lhs = e只有在与"变量或属性表达式"一起使用时才有效,如lhs

Reference类型用于解释delete、typeof和赋值操作符[包括=、+=等]等操作符的行为。例如,赋值操作的左操作数期望产生一个引用[规范类型表达式]。

这是JavaScript将值赋给适当变量/属性的方式。当不能进行这样的赋值操作时,例如试图在=操作符的左侧使用函数调用时,将抛出运行时错误。

(这是我关于++的回答的改编)


这个特殊的实例可以通过以下方法解决,其中满足上述要求,因为innerHTML属性

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

(但是,更好的是使用正确的DOM操作,而不是HTML混乱)