我在动态创建选项的选择标签中添加了一个脚本标签。该函数工作正常,但 W3C 验证器给我 4 个关于此语法的错误。如果你们能帮我找到这个问题的解决方案,那将会很有帮助。
这些是重复 2 次的 2 个错误。
1. 文档类型不允许在此处使用元素“script”
2. year_option();未完成的“select”的结束标记
最佳答案
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 并不意味着要像那样进行模板化。
关于javascript - 关于表单标签内的脚本标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15354608/