我正在使用带有函数myjs.js
的外部javascript文件(例如:setval()
)来设置HTML标签的innerText
属性。
我有<lable id="abc"></lable>
的PHP页面,我在myjs.js
部分中添加了<head>
。 myjs.js
包含在另一个PHP文件的<head>
部分中,我正在从此文件调用setval()
,所以当它运行时,它必须设置innerText
的标签。第一个PHP文件。
有可能实现吗?任何建议都非常感谢。 我希望我能提出清楚的问题。
由于
答案 0 :(得分:1)
理想情况下,将您的myjs.js
包含移至页面的底部(在结束</body>
标记之前或之后)。那就是:
document.getElementById("abc").innerText = /* ...the text */;
如果由于某种原因无法移动包含,可以将上述代码放在一个函数中,例如:
function updateTheLabel() {
document.getElementById("abc").innerText = /* ...the text */;
}
...然后将此脚本放在标签后面:
<label id="abc"></label>
<script>
updateTheLabel();
</script>
如果您不想这样做(并且有点难看,将脚本标记混合到您的标记中),您可以等待页面准备就绪时发生的某种事件。搜索“javascript dom ready event”,你会看到很多的讨论,以及许多解决方案。如果您使用的是库jQuery,Prototype或any of several others,那么图书馆将为您提供一些东西的可能性很高(但不是100%)。您可能不想等待window
load
事件,因为它会在页面加载过程中触发非常(在所有外部资源 - 图像等等之后)加载)。
(如果不知道你正在使用什么库,如果有的话,不能做上面的实例;但是,那里有几十个“dom ready”解决方案。)
或者我认为最糟糕的情况是,你可以在myjs.js
中使用它进行民意调查:
function updateTheLabel() {
var elm = document.getElementById("abc");
if (elm) {
elm.innerText = /* ...the text */;
}
else {
setTimeout(updateTheLabel, 50);
}
}
setTimeout(updateTheLabel, 0);