W3 用 1 行 JavaScript 代码验证 html 错误

W3 validate html error with 1 line of javascript code

本文关键字:验证 html 错误 代码 JavaScript W3      更新时间:2023-09-26

我收到以下错误 validator.W3.org

70 行,第 26 列:字符"<"是分隔符的第一个字符,但作为数据出现

if (remainingSeconds < 10) {

第 70 行,第 26 列:开始标记:无效的元素名称

if (remainingSeconds < 10) {

这是我使用的代码。

<script type="text/javascript">
function secondPassed() {
var minutes = Math.round((seconds - 30)/60);
var remainingSeconds = seconds % 60;
if (remainingSeconds < 10) {
    remainingSeconds = "0" + remainingSeconds;  
}
</script>

如果我删除<或将><更改为>

有人有想法吗?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

您正在验证 XHTML 文档,因此您必须在脚本内容周围使用 CDATA 标记。

<script>
  <![CDATA[
  // JavaScript goes here
  ]]>
</script>

就我个人而言,我不知道你为什么会在这个时代使用XHTML,但无论如何。

如果你正在验证为 XHTML,请尝试将你的 JavaScript 包装在<![CDATA[]]>块中:

<什么![CDATA[]]> 在 XML 中是什么意思?

您使用的是严格的 XHTML,因此,如果要将它们用作文本,则必须正确转义作为 XML 语法一部分的所有字符(几乎)。在 XHTML 中,通常的方法是使用 CDATA 块,该块以与 HTML 兼容的方式进行转义:

<script type="text/javascript">//<![CDATA[
function secondPassed() {
var minutes = Math.round((seconds - 30)/60);
var remainingSeconds = seconds % 60;
if (remainingSeconds < 10) {
    remainingSeconds = "0" + remainingSeconds;  
}
//]]></script>

但是,有两个更好的修复方法:

  • 使用HTML5(<!DOCTYPE html>),而不是XHTML
  • 使用外部脚本,<script type="text/javascript" src="second-passed.js"></script>

两者都是更好的做法。