5

JavaScript&がw3検証で引き起こすエラーを修正する方法はありますか?問題は、ifステートメントで&&を使用する必要があり、これら2つの&&がw3検証でエラーを引き起こすことです。

編集:「<」と「>」で同じ問題。

4

4 に答える 4

18

できることがいくつかあります。

HTMLコメントで囲むことができます。

<script type="text/javascript">
<!--

if (foo && bar) ...

//-->
</script>

CDATAセクションで囲むことができます。

<script type="text/javascript">
// <![CDATA[

if (foo && bar) ...

// ]]>
</script>

代わりに、ファイルに含めることができます。

<script src="foobar.js" type="text/javascript"></script>
于 2009-09-27T10:41:43.253 に答える
3

主な答えは次のとおりです。HTMLファイルではなくJavaScriptにJavaScriptファイルを使用し、srcスクリプトタグの属性を使用します。(パフォーマンスのために、すべてのJSを1つのファイルに結合し、最小化、gzipなどします。)

ただし、どうしても必要な場合は、JavaScriptをHTMLに埋め込むことができます。有効で最新のDOCTYPEを使用すれば、コメントタグやCDATAセクションに頼る必要はありません。

有効なHTML5の例:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Example</title>
<script type='text/javascript'>
function foo() {
   var a = 1, b = 2;

   if (a && b) {
      alert("Both");
   }
   if (a < b) {
      alert("a < b");
   }
   if (a > b) {
      alert("a > b");
   }
}
</script>
</head>
<body>
<p>Hi there</p>
</body>
</html>

doctypeを次のように変更すると、HTML4strictとしても検証されます。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

どちらの場合も、スクリプトの終了タグに注意する必要があることに注意してください-

これにより問題が発生します。

<script type='text/javascript'>
alert("</td>");
</script>

これは、スラッシュの前に円記号を付けることで問題を解決します(または、終了タグを個別の文字列リテラルに分割できます)。

<script type='text/javascript'>
alert("<\/td>");
// -or-
alert("<" + "/td>");
</script>

しかし、繰り返しになりますが、基本的な答えは次のとおりです。回避できる場合はJavaScriptをHTMLファイルに埋め込まないでください。そのためには、JavaScriptファイルを使用してください。

于 2009-09-27T10:55:06.260 に答える
0

あなたの説明に基づいて、HTMLタグ(onclickなど)のイベントプロパティ内にあるスクリプトについて話しているのではないかと思います。その場合、スクリプトコードはHTMLでエンコードする必要があります。エリヤはそこで頭に釘を打ちました。

例えば:

<input type="submit" onclick="if(somevar &amp;&amp; othervar) callFunc(&quot;clicked&quot;);">

<script></script>ブロック内でそれを行う必要はありません。

于 2009-09-28T00:02:43.733 に答える
-1

、、、およびでエスケープ&します。&amp;<&lt;>&gt;

于 2009-09-27T21:55:41.040 に答える