Javascript - 功能 VS 无功能......这是如何工作的?

标签 javascript ajax browser

如果我将以下脚本放在脚本正在搜索的元素上方,我会收到一个错误:

<script type="text/javascript">
document.getElementById('my_iframe').src = "my_file.php";
</script>

当然,为了让它再次工作,我需要将它放在元素的下方

然而,如果我将相同的东西变成一个函数并将它放在脚本正在搜索的元素上方,它会完美地工作:

function loadnew(){
    document.getElementById('my_iframe').src = "my_file.php";
}

问题是,如果我使用一个函数,为什么它会起作用?我一直认为,为了让脚本找到它需要放置在它正在搜索的元素下方的东西?

谢谢!

最佳答案

它放在哪里并不重要,唯一重要的是它何时被执行。

如果它在有 id 为 my_iframe 的元素之前执行,它将失败,如果有,它将成功。

因此,如果您只是执行一个内联脚本标签,然后将您的一个衬里放在那里,它将立即执行,如果脚本标签恰好位于 ID 为 my_iframe 的标签之前,则不会找到任何内容- getElementById 返回 null,它不是普通对象,因此不能具有属性 src,因此您的代码失败。

如果您定义一个函数并在具有 id my_iframe 的元素存在后执行它,它将返回一个元素对象并且您的代码运行正常(诅咒假设该元素对象允许 src 要设置的属性)。

关于Javascript - 功能 VS 无功能......这是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4721466/

相关文章:

javascript - 如何在 meteor 中获取表单值?

javascript - Codeigniter - 如何从ajax获取数据表数据?

javascript - "infinite"滚动时 AJAX 数据加载不正确

javascript - 浏览器插件检测

java代码--如何检测浏览器是否打开

javascript - HTML整页缩小工具?

javascript - 创建一个按钮来执行 .bat 或 .exe

javascript - 默认情况下,Javascript 函数是否通过引用或值返回对象?

UpdatePanel 内的 ASP.NET 标签未更新

javascript - Python - 无法导入模块 'PIL'