“属性名称不允许元素格在这一点上”

问题描述 投票:25回答:5

我得到一个W3V验证错误,我无法理解:

线31,柱61:属性name未在这一点上允许元件div

这是该行:

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

完整的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>
html html5 w3c-validation
5个回答
21
投票

该错误消息似乎很自我解释。你不能有一个name标签div属性。所以,你的代码看起来是这样的:

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

然后用ID选择:

$('div#message')...

22
投票

我发现了一些条目从:

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

万一你打算定义自定义属性,你必须在前面加上“data-”的属性。

因此,在这种情况下,名称为:data-name=""

你可以通过'div[data-name="value"]'引用它。


16
投票

没有为div元素没有name属性。

如果你想唯一标识一个,然后使用id

如果你想标记一个作为一个组的成员,然后使用class

你可以使用一个name属性(即尚未被弃用)的唯一地方是在表单控件(inputselecttextareabutton)。


8
投票

这是一个迟到的反应,但由于这个页面在搜索只是想出了:

由于名称属性不上某些元素允许的,并在其中你可能不希望形式的特殊意义,但任何属性名称以“数据 - ”是可以接受的使用自己的目的,我建议使用“数据名称“属性,就像这样:

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

然后,您可以这样写:

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

否则操作通过jQuery股利。

使用数据的属性有好生之德,这是不可能用你的前端设计可与ID和类名的CSS的目的是做相冲突。

在我们的办公室,我们有一个ID和班级被保留用于CSS的理解和JavaScript开发人员应该独自离开他们。相反,前端设计师,欢迎更改ID,类或大部分东西甚至元素类型,只要他们不惹的数据属性。


1
投票

所述name属性不是规范DIV元件的一部分。 name是,一般来说,只有在表单元素有效。

请参阅:http://www.w3schools.com/tags/tag_div.asp

© www.soinside.com 2019 - 2024. All rights reserved.