我正在使用AJAX来填充名为'持续时间'的选择框。来自数据库。用户可以选择持续时间并提交表单。然后,数据库的结果将列在同一页面上。然后我使用这个PHP / Javascript代码将选择框设置回用户的选择。
echo "<script>alert(); document.getElementById('duration').value = '" . $xDuravar . "';</script>";
出于某种原因,只有当我使用Alert()时,才会在选择框中显示正确的选项。否则,选择框将恢复为默认值。为什么会这样?任何帮助将不胜感激。提前谢谢。
答案 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
,它还会等待加载任何图像,CSS,JS文件。因此,您可以根据自己的需要使用其中一种。如果您不知道应该选择哪一个,请使用load
。