如何从外部javascript设置HTML元素的值

时间:2012-05-11 15:07:04

标签: javascript

我正在使用带有函数myjs.js的外部javascript文件(例如:setval())来设置HTML标签的innerText属性。

我有<lable id="abc"></lable>的PHP页面,我在myjs.js部分中添加了<head>myjs.js包含在另一个PHP文件的<head>部分中,我正在从此文件调用setval(),所以当它运行时,它必须设置innerText的标签。第一个PHP文件。

有可能实现吗?任何建议都非常感谢。 我希望我能提出清楚的问题。

由于

1 个答案:

答案 0 :(得分:1)

理想情况下,将您的myjs.js包含移至页面的底部(在结束</body>标记之前或之后)。那就是:

document.getElementById("abc").innerText = /* ...the text */;

Live example | source

如果由于某种原因无法移动包含,可以将上述代码放在一个函数中,例如:

function updateTheLabel() {
    document.getElementById("abc").innerText = /* ...the text */;
}

...然后将此脚本放在标签后面:

<label id="abc"></label>
<script>
updateTheLabel();
</script>

Live example | source

如果您不想这样做(并且有点难看,将脚本标记混合到您的标记中),您可以等待页面准备就绪时发生的某种事件。搜索“javascript dom ready event”,你会看到很多的讨论,以及许多解决方案。如果您使用的是库jQueryPrototypeany 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);

Live example | source