为什么我不能分配element.innerHTML?

时间:2016-11-30 20:40:35

标签: javascript

为什么我不能将some_var.innerHTML的引用存储到变量然后修改它?

这是什么规则?

HTML

<div id = "out">
test
</div>

如果我直接这样做,它会起作用。

var out = document.getElementById("out");
var res = out.innerHTML;
res = "foo";

https://jsfiddle.net/yo1oajmf/

5 个答案:

答案 0 :(得分:1)

您;重新将其分配给res,然后重新分配资源。此代码不会向innerHTML分配任何内容。

out.innerHTML = "foo";

这是你改变innerHTML的方法。

答案 1 :(得分:1)

您的代码正常运行。只是您将innerHTML存储在res中,然后在下一行覆盖它。此外,在为res分配值"foo"之后,您无法对innerHTML执行任何操作。

  

您还必须了解,当您存储innerHTML时,您正在收集数据的COPY。如果要修改div,   你必须回信。

此示例读取第一个foo s值,然后将该var out = document.getElementById("out"); var res = out.innerHTML // Store the HTML res = res + " foo"; // Adjust the data out.innerHTML = res; // Write the new data back to the HTML element加到第二个div。

&#13;
&#13;
<div id = "out">test</div>
&#13;
   // Tell the media scanner about the new file so that it is
// immediately available to the user.
MediaScannerConnection.scanFile(this,
        new String[] { file.toString() }, null,
        new MediaScannerConnection.OnScanCompletedListener() {
    public void onScanCompleted(String path, Uri uri) {
        Log.i("ExternalStorage", "Scanned " + path + ":");
        Log.i("ExternalStorage", "-> uri=" + uri);
    }
});
&#13;
&#13;
&#13;

答案 2 :(得分:1)

因为分配到res与分配给innerHTML不同;即使您之前已将innerHTML分配给res

当您说res = element.innerHTML时,您将innerHTML的内容分配给res。然后,当您说res = "something else"时,您正在更改res所分配的内容。

res = element.innerHTML 意味着对res所做的任何更改都会反映在innerHTML中。

答案 3 :(得分:1)

因为在下面的代码中,innerHTML vaue,即test将被赋值给变量res

    var out = document.getElementById("out").;
    var res = out.innerHTML;

此代码只是,

    var res = document.getElementById("out").innerHTML; // res = "test"

之后你用“foo”覆盖res(即test)的值。

答案 4 :(得分:0)

如果你使用jQuery,你可以简单地执行以下操作:

$("#out").html("foo");