0

私は自分のページでこの JavaScript コードを使用し、w3c バリデーターに対してチェックしました。次の2つのエラーが発生しました。

  1. 属性「onKeyDown」はありません
  2. 属性「onKeyUp」はありません

html 宣言タイプを遷移型に変更しません。そのため、スクリプトを変更する必要があります。

スクリプト HTML

<textarea id="message" cols="20" rows="5" name="message" onKeyDown="textCounter('message','messagecount',100);" onKeyUp="textCounter('message','messagecount',100);"></textarea>
<span id="charsleft"></span>

スクリプト Javascript:

<script>
    function textCounter(textarea, countdown, maxlimit) {
        var textareaid = document.getElementById(textarea);
        if (textareaid.value.length > maxlimit)
          textareaid.value = textareaid.value.substring(0, maxlimit);
        else
          document.getElementById('charsleft').innerHTML = '('+(maxlimit-textareaid.value.length)+' characters available)';
      }
</script>

<script type="text/javascript">
    textCounter('message','messagecount',100);
</script>

私は JavaScript について何も知らないので、親切に質問します。私のページが XHTML 1 で厳密に検証されるようにするには、どのような変更を加える必要がありますか? それとも、XHTML 1.0 Strict で検証され、同じことを行う別のスクリプトを探す必要がありますか?

注: とりあえずスクリプトはこのように動作します: テキストエリアに書き込むと、2 つのスパンの間の部分が<span id="charsleft"></span>表示され、残りの文字数がリアルタイムで書き込まれます。スタイルの見せ方は私にとって重要ではありません。たとえば、最初の値 (文字数の制限) は常に表示できます。唯一のポイントは、W3C の検証です。

ありがとう、BR

4

1 に答える 1

1

w3cバリデーターには、そのようなエラーが発生した場合の「修正方法」のヒントが含まれています。

あなたの場合、それは言います:

修正方法: 要素と属性のスペルと大文字/小文字を確認してください (XHTML はすべて小文字であることに注意してください) ...

つまり、属性名をすべて小文字に変更します。

<textarea id="message" cols="20" rows="5" name="message" onkeydown="textCounter('message','messagecount',100);" onkeyup="textCounter('message','messagecount',100);"></textarea>
<span id="charsleft"></span>

インライン イベント属性を削除し、スクリプト ブロックの JS からイベント ハンドラーを追加する方がよいのですが、面倒なので範囲外と宣言します。(それに関するいくつかのヒントについては、Google の「目立たない JavaScript」を参照してください。)

于 2013-03-22T10:21:02.743 に答える