2011-02-10 7 views
23
<!DOCTYPE html> 
<html> 
    <head> 
     <title>jGrowl</title> 

     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>  
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js"></script> 

     <script type="text/javascript" src="data/awo-jgrowl.js"></script> 
     <script type="text/javascript" src="data/shortcut.js"></script> 

     <link rel="stylesheet" type="text/css" href="data/awo-jgrowl.css"> 

     <script type="text/javascript"> 
      $(document).ready(function() { 
       $('div[name=message]').awomsg('Input message', {sticky: true}); 
      }); 

      shortcut.add("m",function() { 
       $('div[name=message]').awomsg('Input message', {sticky: true}); 
      }); 

      shortcut.add("h",function() { 
       alert('ur doin it wrong'); 
      }); 
     </script> 

    </head> 
    <body> 
     <div name="message" class="jGrowl bottom-right errorGrowl"></div> 
    </body> 
</html> 

こんにちは、私は私が理解できない、W3Cのエラー取得しています:属性名は、この時点で要素をdiv要素に許可されていない

ライン31、コラム61:属性名は、この時に要素divの上で許可されていませんポイント。

この行です:

<div name="message" class="jGrowl bottom-right errorGrowl"></div> 
+0

以下の回答に基づいて、このW3Cエラーメッセージの問題は、「この時点で」という表現です。現在の時点、文書内の特定の場所、または属性要素の順序付けの特定の場所であることを意味するかどうかは明確ではありません。それは悪いエラーメッセージです。 「この時点で」の部分は、「要素Divに名前属性が許可されていません」のままにする方が良いでしょう。よりクリーンでエラーメッセージを理解しやすくなりました。 –

答えて

18

エラーメッセージはかなり自明です。 divタグにname属性を設定することはできません。だからあなたのコードは次のようになります。その後、

<div id="message" class="jGrowl bottom-right errorGrowl"></div> 

とidセレクタを使用します。

Markup Validation Error: "Attribute name not allowed on element at this point" error #HTML5

念のためにあなたが定義するつもり:

$('div#message')... 
16

div要素にはname属性はありません。

一意に識別する場合は、idを使用します。

グループのメンバーとしてマークする場合は、classを使用します。

あなたがname属性を使用することができる唯一の場所は、(それが廃止されていません)フォームコントロール(inputselecttextareabutton)です。

1

name属性は、DIV要素の仕様の一部ではありません。 nameは、一般に、フォーム要素でのみ有効です。

参照:http://www.w3schools.com/tags/tag_div.asp

+6

その参照を指摘しないでください、それは十分ではありません:http://w3fools.com/ – Quentin

+8

すべての尊敬のもとに、それは手元に問題を説明するのに十分です。率直に言えば、私の選択肢の中でのあなたのスナイピングは、正確さの問題があるかもしれないどんなサイトよりもずっと遠くない。皆さんに知ってもらいたいと思っていますが、サードパーティのサイトに対するあなたの十字軍にとっては、これが適切な場所であるとは思えません。 –

+2

私はそれが特定の点を説明することで正確であることに同意しますが、w3schoolsがこのような事柄について間違いを犯しているという事実は、どんな種類の信頼できる参照でも疑うものです。しかし、彼は間違いなくもっと外交的だったはずです。 – Isochronous

19

私はからいくつかのエントリが見つかりましたカスタム属性の場合は、属性に "data-"を追加する必要があります。

この場合、名前はdata-name=""となります。

'div[data-name="value"]'で参照できます。

+0

私をたくさん助けました。ありがとう。 –

+0

優れた回避策が必要です – Deanie

8

これが遅れ応答であるが、このページは単に検索で思い付いたので、:

name属性は、特定の要素には許可されていないので、あなたが望まないかもしれない形で特別な意味を持っていますが、任意の属性

<div data-name="message" class="jGrowl bottom-right errorGrowl"></div> 

あなたはその後、書くことができます:

$('[data-name="message"]').text("Here is a new message!"); 
を「DATA-」は、このように、私が「データ名」属性を使用することをお勧めします、あなた自身の目的のために用いても良いで始まる名前

そして、jQuery経由でdivを操作します。

データ属性を使用すると、フロントエンドの設計者がCSS目的でIDやクラス名を使用している場合と競合する可能性が低くなります。

私たちのオフィスでは、IDとクラスはCSSのために予約されており、JavaScript開発者はそれらを残しておく必要があることを理解しています。逆に、フロントエンドの設計者は、ID、クラス、またはほとんどのものの要素タイプを変更することは歓迎されています。