无法从元标记访问数据

时间:2017-11-27 10:33:36

标签: javascript html

我正在尝试使用javascript访问我在<meta>标记中存储的数据,但由于某种原因,getAttribute()函数无效。

&#13;
&#13;
document.write("<p>")
document.write("Hello, world")
document.write("</p>")

var metatags = document.getElementsByTagName('meta[id="candidate1"]');
metatags.getAttribute("data-candidate")
document.write(metatags)
&#13;
Here is my code:

<body>
  <h1>Testing 1, 2</h1>
  <meta id="candidate1" data-candidate="1">
  <meta id="candidate2" data-candidate="2">
</body>
&#13;
&#13;
&#13;

产生的错误是&#34; Uncaught TypeError:metatags.getAttribute不是函数&#34;

有谁知道为什么这不起作用或者是否有更好的方法来访问标签中存储的数据?

我是javascript的新手,所以感谢你能给我的任何提示。

1 个答案:

答案 0 :(得分:3)

不要这样做!这是一种非常糟糕的做法!

<meta>代码为used for different things。他们控制文档(charset,viewport,RSS feed等),提供有关页面的其他信息(社交媒体属性,作者,机器人的下一页等)。您希望从JavaScript中读取的用户数据和设置不应该在此处。有办法将任何数据传递给JS:将一个脚本放在<head>中,并将一些全局变量设置为你想要的任何东西:

<head>
    <script>
        var candidate1 = 1;
        var candidate1 = 2;
    </script>
    <script src="your.js"></script>
</head>

您可以从your.js

轻松访问这些值
console.info(candidate1, candidate2);

如您所见,不需要<meta>个标签。这为您的代码提供了更多语义。

问题:

您可能会阅读getElementsByTagNamequerySelector。第一个用于获取HTML标记名称匹配的所有元素,另一个用于类似CSS的更丰富选择器以获取元素。你不能混合这些。因此,您的metatags可能为空,因此您无法在其上调用getAttribute

小心using document.write!要进行调试,请使用window.console。在实际产品中,您绝不能使用document.write