0

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

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

有没有可能实现?非常感谢任何建议。我希望我把问题说清楚了。

谢谢

4

1 回答 1

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”,你会看到很多关于这个的讨论,以及很多解决方案。如果您使用库jQueryPrototype任何其他库,那么库将为您提供某些东西的可能性很高(但不是 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);

实例| 资源

于 2012-05-11T15:11:25.667 回答