HTML和JavaScript“;这";

HTML和JavaScript“;这";,javascript,html,Javascript,Html,我这里有这个HTML代码 <ul> <li><a href="#" id="0">Services</a></li> <li><a href="#" id="1">Portfolio</a></li> <li><a href="#" id="2">Contact</a></li> </ul> 问题:是否可

我这里有这个HTML代码

<ul>
    <li><a href="#" id="0">Services</a></li>
    <li><a href="#" id="1">Portfolio</a></li>
    <li><a href="#" id="2">Contact</a></li>
</ul>
问题:是否可以确定单击了哪个“A”标记,而不为链接设置额外的“id”属性?使用JavaScript时,情况如下所示:

document.getElementsByTagName("a")[number];
我需要这个号码

我希望你明白我的意思。对不起,我的英语不好。

当然可以:

var index = this.parentNode.parentNode.childNodes.indexOf(this.parentNode);

NodeList.prototype.indexOf = function(obj) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == obj) return i;
    }
    return undefined;
}
var index=this.parentNode.parentNode.childNodes.indexOf(this.parentNode);
NodeList.prototype.indexOf=函数(obj){
for(var i=0;i
或:


这里的解决方案不那么优雅,但很实用:

window.onload = function() {
    var links = document.getElementsByTagName("a");
    for (var i = 0; i < links.length; i++) {
        links[i].onclick = function() {
            var index = FindIndex(this);
            alert("index: " + index);
            return false;
        };
    }
};

function FindIndex(oLink) {
    var listItem = oLink.parentNode;
    var oList = listItem.parentNode;
    var allItems = oList.getElementsByTagName("li");
    for (var i = 0; i < allItems.length; i++) {
        if (allItems[i] === listItem)
            return i;
    }
    return -1;
}
window.onload=function(){
var links=document.getElementsByTagName(“a”);
对于(变量i=0;i

.

您是否尝试过target或currentTarget?(参考):必须以字母开头
([a-Za-z])
()currentTarget抛出未定义的错误。HTML5中不再支持@Yoshi:的可能重复项。注意:IE中不支持indexOf。web上有JS函数模拟IE,并尽可能使用本机实现。下面是此类函数的一个示例,这里有一个很好的修复方法:
childNodes
是节点列表,而不是数组,因此它没有
indexOf
方法。这将包括文本节点,包括空白,这可能不是您想要的。编辑:并且
始终是链接,它始终是父元素中的第一个元素,因此它始终是
0
。出于某种原因,它抛出错误:this.parentNode.childNodes.indexOf(this)不是function@nuclear这是因为除了列表项之外,文本节点也是列表的一部分。请看我的答案和测试案例。Tim van Elsloo解决方案是我正在寻找的。
<a href="#" onclick='doSomething(this)'>
<a href='?clicked=1'>Click Me</a>
window.onload = function() {
    var links = document.getElementsByTagName("a");
    for (var i = 0; i < links.length; i++) {
        links[i].onclick = function() {
            var index = FindIndex(this);
            alert("index: " + index);
            return false;
        };
    }
};

function FindIndex(oLink) {
    var listItem = oLink.parentNode;
    var oList = listItem.parentNode;
    var allItems = oList.getElementsByTagName("li");
    for (var i = 0; i < allItems.length; i++) {
        if (allItems[i] === listItem)
            return i;
    }
    return -1;
}