如何通过javascript获取标签属性而不使用id或类?

时间:2015-08-21 06:40:47

标签: javascript

我是javascript中的新手。我正在尝试以下代码来获取href属性。

<a href="facebook.com"  onclick="cheak()">Facebook</a>

        <script type="text/javascript">
        function cheak()
        {
            var a= document.getElementsByTagName("a").getAttribute('href');
            alert(a);
        }

</script>

我知道这是通过下面的代码

工作的
document.getElementById("myid").getAttribute('href');  // if I use any id

但是在标签中我不想使用任何id或类。如何在不使用a标记中的任何ID或类的情况下获取此属性。

3 个答案:

答案 0 :(得分:2)

如果在调用该函数时传入this。它会将元素引用传递给您的函数,您可以使用它来获取href:

的值
<a href="facebook.com"  onclick="cheak(this)">Facebook</a>
<!-- Note -----------------------------^^^^            -->

<script type="text/javascript">
function cheak(a) {
     alert(a.href); // Gives you the fully-resolved URL
     alert(a.getAttribute("href")); // Gives you the content of the `href` attribute (not fully-resolved)
}
</script>

参数data是名为

的函数的完整标记

答案 1 :(得分:2)

前言:下面,在一般情况下,我已经回答了如何在不使用idclass的情况下查找元素的问题。但是,如果您只想在cheak函数中使用该元素,则Zain's answer是正确的方法(对代码进行最少的更改;可以说 more 正确可能是现代事件连接)。

  

但是在标签中我不想使用任何id或类。如何在不使用id标记中的任何classa的情况下获取此属性。

你选择了元素选择的瑞士军刀:document.querySelector。有了它,您可以使用与元素匹配的任何CSS selector

var href = document.querySelector("any selector here").getAttribute("href");

querySelector会在文档中返回第一个匹配。 (还有querySelectorAll,它会返回一个列表。)所有现代浏览器和IE8都支持它们。

由于您拥有CSS选择器的全部功能,因此您可以使用有关文档中元素位置的任何内容来查找它。

对于特定示例,您的问题中的上下文太少,但例如,如果它是文档中的第一个 a

&#13;
&#13;
var href = document.querySelector("a").getAttribute("href");
alert(href);
&#13;
<a href="facebook.com"  onclick="cheak()">Facebook</a>
&#13;
&#13;
&#13;

或使用onclick

&#13;
&#13;
var href = document.querySelector("a[onclick='cheak()']").getAttribute("href");
alert(href);
&#13;
<a href="facebook.com"  onclick="cheak()">Facebook</a>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

<a href="www.facebook.com"  onclick="cheak(event)">Facebook</a>

     <script type="text/javascript">
    function cheak(e)
    {
       e.preventDefault(); 
      //  var a= document.getElementsByTagName("a").getAttribute('href');
        alert(e.target);
    }

</script>