“此时元素div上不允许使用属性名称”

时间:2011-02-10 20:08:13

标签: html html5 w3c-validation

我收到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>

5 个答案:

答案 0 :(得分:22)

我发现了一些来自:

的条目

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

如果您打算定义自定义属性,则必须在属性前添加“data-”。

所以在这种情况下,名称将是:data-name=""

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

答案 1 :(得分:20)

错误消息似乎非常自我解释。您在name代码上不能拥有div属性。所以你的代码看起来像这样:

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

然后使用id选择器:

$('div#message')...

答案 2 :(得分:16)

div元素没有name属性。

如果您想要唯一标识一个,请使用id

如果您想将其标记为群组成员,请使用class

您可以使用name属性(尚未弃用)的唯一位置是表单控件(inputselecttextarea和{{1 }})。

答案 3 :(得分:8)

这是一个迟到的回复,但由于此页面刚出现在搜索中:

由于某些元素不允许使用name属性,并且在您可能不需要的表单中具有特殊意义,但任何以“data-”开头的属性名称都可以用于您自己的目的,我建议使用“ data-name“属性,像这样:

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

然后你可以写:

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

并通过jQuery操纵div。

数据属性的使用具有以下优点:它不太可能与您的前端设计人员为CSS目的使用ID和类名进行冲突。

在我们的办公室中,我们了解到ID和类是为CSS保留的,而JavaScript开发人员应该不管它们。相反,前端设计人员可以更改大多数内容的ID,类甚至元素类型,只要它们不会混淆数据属性。

答案 4 :(得分:1)

name属性不是DIV元素规范的一部分。一般来说,name仅对表单元素有效。

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