为什么添加Javascript警报会更改此代码的行为

时间:2015-08-13 18:53:01

标签: javascript alert

我正在使用AJAX来填充名为'持续时间'的选择框。来自数据库。用户可以选择持续时间并提交表单。然后,数据库的结果将列在同一页面上。然后我使用这个PHP / Javascript代码将选择框设置回用户的选择。

echo "<script>alert(); document.getElementById('duration').value = '" . $xDuravar . "';</script>";

出于某种原因,只有当我使用Alert()时,才会在选择框中显示正确的选项。否则,选择框将恢复为默认值。为什么会这样?任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:1)

当您的JS代码执行时,文档尚未加载,它找不到#duration元素。

添加alert时它起作用的原因是JavaScript执行会一直停止,直到你解除它为止,然后加载文档。

&#34;正常&#34;解决方法是等待加载文档:

echo "<script>
        window.addEventListener('DOMContentLoaded', function(){
            document.getElementById('duration').value = '" . $xDuravar . "';
        }, false);
      </script>";

旁注

如果您使用DOMContentLoaded,它只会等待加载DOM(基本上是HTML)(足以支持您发布的代码)。但是,如果您按照Siguza评论中的建议使用load,它还会等待加载任何图像,C​​SS,JS文件。因此,您可以根据自己的需要使用其中一种。如果您不知道应该选择哪一个,请使用load