wake-up-neo.net

"Attributname für Element div zu diesem Zeitpunkt nicht zulässig"

Ich erhalte einen W3V-Prüferfehler, den ich nicht verstehen kann:

Zeile 31, Spalte 61: Das Attribut name ist an dieser Stelle für das Element div nicht zulässig.

Das ist diese Zeile:

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

Volles HTML:

<!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>
25
Thew

Die Fehlermeldung erscheint ziemlich selbsterklärend. Sie können kein name-Attribut für ein div-Tag haben. So könnte Ihr Code so aussehen:

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

und dann ID-Selektoren verwenden:

$('div#message')...
20
Darin Dimitrov

Ich habe einen Eintrag gefunden von: 

Fehler bei der Markup-Überprüfung: "Attributname für Element zu diesem Zeitpunkt nicht zulässig" Fehler # HTML5

Für den Fall, dass Sie ein benutzerdefiniertes Attribut definieren möchten, müssen Sie das Attribut mit "data-" voranstellen. 

In diesem Fall wäre der Name also: data-name=""

Und Sie können es mit 'div[data-name="value"]' referenzieren. 

21
Ross

Es gibt kein name-Attribut für div-Elemente.

Wenn Sie eine eindeutig identifizieren möchten, verwenden Sie id.

Wenn Sie eines als Mitglied einer Gruppe markieren möchten, verwenden Sie class.

Der einzige Ort, an dem Sie ein name-Attribut verwenden können (das nicht veraltet ist), ist in Formularsteuerelementen (input, select, textarea und button).

16
Quentin

Dies ist eine späte Antwort, aber da diese Seite gerade bei einer Suche aufkam:

Da das Namensattribut für bestimmte Elemente nicht zulässig ist und in Formularen, die Sie möglicherweise nicht möchten, eine besondere Bedeutung hat, ein Attributname, der mit "data-" beginnt, jedoch für eigene Zwecke verwendet werden kann, empfehle ich die Verwendung von "data-name" "Attribut wie folgt:

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

Sie können dann schreiben:

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

Und ansonsten manipulieren Sie das div über jQuery.

Die Verwendung von Datenattributen hat den Vorteil, dass es unwahrscheinlich ist, dass dies möglicherweise mit Ihren Frontend-Designern mit IDs und Klassennamen für CSS-Zwecke in Konflikt steht. 

In unserem Büro verstehen wir, dass IDs und Klassen für CSS reserviert sind und JavaScript-Entwickler sie in Ruhe lassen sollten. Umgekehrt können Frontend-Designer die ID, die Klassen oder sogar den Elementtyp der meisten Dinge ändern, vorausgesetzt, dass sie sich nicht mit den Datenattributen verwechseln.

8
Tom Boutell

Das name-Attribut ist nicht Bestandteil der Spezifikation für DIV-Elemente. name ist im Allgemeinen nur für Formularelemente gültig.

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

1
Chris Baker