为什么Javascript可以完全内联运行,但如果外部引用则不能?
我正在尝试填充用以下内容创建的下拉表单字段:为什么Javascript可以完全内联运行,但如果外部引用则不能?,javascript,html,forms,Javascript,Html,Forms,我正在尝试填充用以下内容创建的下拉表单字段: <div class="section"> <label >Province</label><br> <select id="provinces"></select> </div> 如果我将脚本放在HTML文档中,这将非常有效,但是如果我删除脚本标记并将其放在外部文件中,则不会发生任何事情。我已经从HTML文件中引用了js文件 <script
<div class="section">
<label >Province</label><br>
<select id="provinces"></select>
</div>
如果我将脚本放在HTML文档中,这将非常有效,但是如果我删除脚本标记并将其放在外部文件中,则不会发生任何事情。我已经从HTML文件中引用了js文件
<script type="text/javascript" src="js/formcalculations.js"></script>
我已经确认我引用的字段是正确的
很明显,我又犯了一个愚蠢的错误。你们这些专家能告诉我哪里出了问题吗 检查是否
1) 脚本文件被正确引用(打开src位置)并且
2) 脚本标记位于主体内(理想情况下位于section元素之后)。可能是javascript代码在呈现元素之前执行加载dom后必须执行代码,您可以选择如何执行:
defer
属性
之前还是
之前)
您共享的代码没有问题。您确定要将其放在HTML后面的
标记前面,而不需要放在
前面。这是一个cargo cult性能技巧,仅当您不希望JS运行到最后一秒时才适用。(这个JS看起来应该在select元素可用时立即运行)。您能确认外部脚本已正确加载吗?在chrome中,使用F12开发工具并查看Sources选项卡。在控制台中会出现哪些错误?仅此一点就应该指出问题所在。正如Joe已经指出的,按F12并打开开发工具。window.onload=“myFunction()”
onload
是一个愚蠢的长度延迟,它不接受字符串作为值。您的第1点是提示,而不是要求。第2点也一样。第三点应该避免粗话,谢谢你的解释和友好的话语@比梅朗:)很高兴知道,我可以帮你。。。热烈欢迎……)
<script type="text/javascript" src="js/formcalculations.js"></script>
<script type="text/javascript">
var provinces = ['Gauteng', 'Limpopo', 'Western Cape', 'Northern Cape', 'Mpumalanga', 'Kwazulu Natal', 'North West', 'Eastern Cape', 'Free State'],
select = document.getElementById('provinces');
for (province in provinces) {
select.add(new Option(provinces[province]));
};
</script>
<script type="text/javascript">
window.onload = function() {
var provinces = ['Gauteng', 'Limpopo', 'Western Cape', 'Northern Cape', 'Mpumalanga', 'Kwazulu Natal', 'North West', 'Eastern Cape', 'Free State'],
select = document.getElementById('provinces');
for (province in provinces) {
select.add(new Option(provinces[province]));
};
};
</script>
window.onload = function() {
var provinces = ['Gauteng', 'Limpopo', 'Western Cape', 'Northern Cape', 'Mpumalanga', 'Kwazulu Natal', 'North West', 'Eastern Cape', 'Free State'],
select = document.getElementById('provinces');
for (province in provinces) {
select.add(new Option(provinces[province]));
};
};