我在一个动态创建选项的选择标签中添加了一个脚本标签。该函数工作正常,但 W3C 验证器给了我关于此语法的 4 个错误。如果你们能找到我解决这个问题的方法,那将会很有帮助。
这些是重复 2 次的2 个错误。
1.文档类型不允许元素“脚本”在这里
2. year_option(); 未完成的“选择”的结束标签
我在一个动态创建选项的选择标签中添加了一个脚本标签。该函数工作正常,但 W3C 验证器给了我关于此语法的 4 个错误。如果你们能找到我解决这个问题的方法,那将会很有帮助。
这些是重复 2 次的2 个错误。
1.文档类型不允许元素“脚本”在这里
2. year_option(); 未完成的“选择”的结束标签
1)唯一<select>
可以拥有的<option>
标签<optgroup>
是验证器抱怨的标签,因为<script>
它不是其中之一——浏览器正在尽最大努力将你的无效标记变成有效的东西,所以尽管它确实有效,这就是你得到错误的原因,如果你实际上是把<script>
标签放在一个<select>
2)你的脚本标签应该在你的页面底部,而不是使用document.write
将选项标签放在那里,使用DOM方法在事后将选项添加到选择元素
<select name="select-box"></select>
<!-- ...rest of page... -->
<script src="external-script.js"></script>
/* contents of external-script.js */
var select_box = document.querySelector("select[name=select-box]"),
bob_opt = document.createElement("option"),
doug_opt = document.createElement("option");
bob_opt.value = "Bob";
doug_opt.value = "Doug";
bob_opt.appendChild(document.createTextNode("Bob"));
doug_opt.appendChild(document.createTextNode("Doug"));
select_box.appendChild(bob_opt);
select_box.appendChild(doug_opt);
有更快,更整洁,或更精细或更灵活的方法来执行此操作,但这比“正确的方法”更接近于:
<select>
<script>document.write("<option value=\"" + i + "\">one</option>");</script>
</select>
或者您目前可能拥有的任何东西。JS 并不意味着要像那样模板化,而无需为此目的使用/编写模板库。
1) 脚本标签应该位于 head 中,或者文档中的其他位置,但不能位于 select 标签内
2) 看起来您缺少标签,或者由于第一个错误而无法找到它。
您可以将标签放在JavaScript
外面,您可以稍后在页面上呈现标签时select
附加标签,在页面加载后使用.option
select
$(document).ready
您可以通过将 JavaScript 放在单独的文件中来标准化您的代码,在那里您可以这样做
$(document).ready(function(){
//Your code to init all things,
//e.g. load options in select box etc..
//so It will be easy later to maintain the code, all init code will go here
});
或者,如果您不使用 jquery,则可以使用以下代码
function your_function(){
//your init code will go here
}
document.getElementsByTagName("body")[0].onLoad = your_function;
就是这样,将您的代码放入your_function()