2014-11-23 82 views
-2

我注意到,当我尝试从div中获取新内容时,浏览器会返回div的旧内容。找到新创建的元素

<div id="here">Old text</div> 

<script> 
document.getElementById('here').innerHTML = "New text"; 
</script> 

现在格文本已更改:

<div id="here">New text</div> 

但是当我试图提醒DIV的innerHTML,我得到的旧文本。 你能告诉我为什么,我怎样才能得到新的文字?

编辑

对不起,我提供了一个错误的javascript代码。这是corect:

var text = document.getElementById('here').innerHTML; 
document.getElementById('here').innerHTML = "New text"; 
alert(text); // returns "Old text" 
+2

这不应该发生。你能展示你如何设置和以何种顺序获取文本并显示它? – GolezTrol 2014-11-23 23:54:45

+0

这不可能。向我们显示一个完整的代码 – gdoron 2014-11-23 23:54:49

+1

听起来好像您可能已经将旧值赋给了一个变量,并且正在提醒那个* never-updated-since-then *变量的值。 – Sampson 2014-11-24 00:01:36

回答

1

注意这里说text不是活引用的#hereinnerHTML财产。这是一次性任务,不会自动更新。你需要的innerHTML直接财产重新分配新的值,或提醒:

var text = document.getElementById('here').innerHTML; 
document.getElementById('here').innerHTML = "New text"; 
alert(text); 

让我们来看看另一种方法:

var here = document.getElementById("here"); // This is a reference 
here.innerHTML = "New Text"; 
alert(here.innerHTML); // This will always be the actual contents 

希望这有助于。

+0

谢谢! 是否有可能从我的代码更新变量? – Marian07 2014-11-24 00:14:10

+1

@ Marian07当然,你也可以保持它最新:'document.getElementById(“here”)。innerHTML = text =“New Text”;'注意双重赋值。不管你采取什么方法,你应该保留对'#here'的引用,所以你不必一直调用'getElementById'。 – Sampson 2014-11-24 00:15:05