2011-02-10 6 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> 

Ciao, sto ottenendo un errore di W3C che non riesco a capire:nome attributo non consentito su elemento div a questo punto

Linea 31, Colonna 61: nome attributo non consentito su elemento div a questo punto.

Cioè questa riga:

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

In base alle risposte seguenti, il problema con questo messaggio di errore W3C è l'espressione "a questo punto". Non chiarisce se significa al momento attuale, in un punto particolare del documento, o in un punto particolare nell'ordinamento degli elementi di attributo. È un messaggio di errore errato. Sarebbe meglio lasciare la parte "a questo punto": "Attributo nome non consentito sull'elemento Div". Sarebbe stato un messaggio di errore più pulito e più facile da capire. –

risposta

18

Il messaggio di errore sembra piuttosto auto esplicativo. Non puoi avere un attributo name su un tag div. Quindi, il codice potrebbe essere la seguente:

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

e quindi utilizzare selettori ID:

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

Non c'è name attributo per elementi div.

Se si desidera identificarne uno in modo univoco, utilizzare id.

Se si desidera contrassegnare uno come membro di un gruppo, quindi utilizzare class.

L'unico posto è possibile utilizzare un attributo name (che non è stato deprecato) è in controlli dei moduli (input, select, textarea e button).

1

L'attributo name non fa parte delle specifiche per gli elementi DIV. name è, in generale, valido solo per gli elementi del modulo.

See: http://www.w3schools.com/tags/tag_div.asp

+6

Si prega di non puntare a tale riferimento, non è abbastanza buono: http://w3fools.com/ – Quentin

+8

Con tutto il dovuto rispetto, signore, è adeguato per illustrare la questione. Francamente, il tuo sniping alla mia scelta di link è di gran lunga meno utile di qualsiasi sito che potrebbe avere problemi di accuratezza. Apprezzo che tu stia cercando di far sapere a tutti, ma non credo che questo sia un luogo appropriato per la tua crociata contro un sito di terze parti. –

+2

Mentre concordo sul fatto che sia accurato nel mostrare quel particolare punto, il fatto che w3schools sia pieno di errori in questioni come questa rende sospetto qualsiasi tipo di riferimento affidabile. Sicuramente avrebbe potuto essere più diplomatico a riguardo, comunque. – Isochronous

8

Questa è una risposta tardiva, ma dal momento che la pagina appena entrato in una ricerca:

Poiché l'attributo nome non è consentito su alcuni elementi e ha un significato speciale in forme che non si può desiderare, ma qualsiasi attributo nome che inizia con "data-" è accettabile da utilizzare per scopi di tuo, mi consiglia di utilizzare il "nome-dati" attributo, in questo modo:

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

si può quindi scrivere:

$('[data-name="message"]').text("Here is a new message!"); 

E altrimenti manipolare il div tramite jQuery.

L'uso di attributi di dati ha il pregio di non essere in conflitto con ciò che i progettisti di frontend potrebbero fare con ID e nomi di classi per scopi CSS.

Nel nostro ufficio abbiamo la consapevolezza che ID e classi sono riservati per CSS e gli sviluppatori JavaScript dovrebbero lasciarli soli. Viceversa, i progettisti di frontend sono invitati a modificare l'ID, le classi o anche il tipo di elemento della maggior parte delle cose, a condizione che non interferiscano con gli attributi dei dati.

Problemi correlati