我应该把DOM操作JS脚本放在``或关闭之前``?

时间:2015-09-05 03:14:08

标签: javascript html dom asynchronous

我的脚本如下所示:

<script>
    var queryString = window.location.search;
    var pos = queryString.indexOf("?refer=");
    var referEmail = queryString.substring(pos+7);
    document.getElementById("referral-code").value = referEmail;
</script>

HTML代码如下所示:

<form action="/" method="POST">
    <label for="referral-code">Referrer's code (hidden): </label>
    <input type="text" name="referral_code" id="referral-code"/>
    <br/>
    <label for="me-email">My Email: </label>
    <input type="text" name="self_email" id="me-email"/>
    <br/>
    <input type="submit" value="Step Inside" />
</form>

我认为将<script>标记放在<head>中可能会更清晰。但是,我不确定在处理<body>中的DOM之前脚本是否会等待执行。如果没有,document.getElementById("referral-code")会返回undefined吗?

有没有人有关于<head>中的脚本是否会等到整个HTML加载之后才会执行的想法?我应该将DOM操作脚本放在<head>中还是在结束</body>之前?

2 个答案:

答案 0 :(得分:0)

如果你想放入头,那么一定要把它放进去

$(document).ready(function(){

});

否则你可以在完成DOM之后把它放在(恰好在</body>之前)

答案 1 :(得分:0)

如果放在标题中,脚本将在DOM加载之前执行,并且不会将referal代码添加到输入中(因为它还不存在)。

我建议把它放在标签前面。

$(document).ready(function(){}); vs script at the bottom of page提供了有关脚本标记/文件位置的一些优缺点/差异的更多信息。