javascript循环无法正常工作?

时间:2012-04-14 05:01:11

标签: javascript html

我想知道标签的长度

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Untitled Document</title>
  <script type="text/javascript">
    function clickme(){
      var x=document.getElementsByTagName('a');
      for(i=0;i<x.length;i++) {
        alert(x[i].length)
      }
    }
</script>
</head>
<body>
  <a href="#" value="1">first</a>
  <a href="#" value="2">second</a>
  <a href="#" value="3">third</a>
  <input type="submit"  onclick="clickme()"/>
</body>

4 个答案:

答案 0 :(得分:5)

由于值不是链接的标准属性,因此您可能需要使用.getAttribute("value")

var x = document.getElementsByTagName('a');

for (var i=0; i<x.length;i++){
    alert(x[i].getAttribute("value"));
}

答案 1 :(得分:2)

在此示例中,x[i]是锚点DOM元素对象。它通常没有值属性。但是,如果要使用该属性,可以通过以下方式访问该属性:

x[i].getAttribute('value');

就个人而言,我会使用HTML5数据属性并定义锚点:

<a href="#" data-value"=1">one</a>

然后通过以下方式访问该值:

x[i].getAttribute('data-value');

如果使用HTML5 doctype,则此选项有效。

答案 2 :(得分:1)

jfriend00说得对。

我想我也会指出,你可能要提前声明“我”,或者与你的内容一致。否则你会使用一个可能在其他地方产生意外后果的全球“i”。

答案 3 :(得分:1)

我很困惑,你已经改变了原来的问题代码示例:

<script type="text/javascript">
    function clickme(){
      var x=document.getElementsByTagName('a');
      for(i=0;i<x.length;i++) {
        alert(x[i].value) //<- "value" not a valid property on the anchor tag
      }
    }
</script>

<script type="text/javascript">
    function clickme(){
      var x=document.getElementsByTagName('a');
      for(i=0;i<x.length;i++) {
        alert(x[i].length) //<- "length" not a valid property on the anchor tag
      }
    }
</script>

如果你只是想确定那个锚标签本身的有序数,你可以只使用“i”(并再次 - 改变它!):

<script type="text/javascript">
    function clickme(){
      var x=document.getElementsByTagName('a');
      for( var i=0;i<x.length;i++) {
        alert(i);
      }
    }
</script>

或者我错过了你要问的东西?