html - 我怎样才能得到一个元素的位置编号?

标签 html firefox dom firebug traversal

firefox 中是否有任何插件或 firebug 中的函数或其他东西,可以让我确定特定元素的位置编号?

例如,如果我想知道与文档中所有 TD 相比,特定 TD 元素的位置。

示例:

<html>
<head>
<body>
<table>
<tr>
<td></td> (0)
<td></td> (1)
<td></td> (2)
<td></td> (3)
<td></td> (And so on...)
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td> <------ WHAT IS THE POSITION NUMBER OF THIS TD?
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>

Example

firefox 中的 webdeveloper 工具栏有一个工具,可以让您查看所有 DIV 的索引号。这是我需要的,但对于其他元素,而不仅仅是 DIV。 Web developer toolbar

附言。我受到正确答案的启发,并制定了自己的解决方案:

var dom = document.getElementsByTagName('td');
var x;
for(x = 0; x < dom.length; x++)
{
    dom[x].innerHTML = dom[x].nodeName + '[' + x + '] ' + '(' + dom[x].innerHTML + ')';
    dom[x].style.color = 'blue';
} 

最佳答案

好吧,以下将根据您的需要执行:

$('li').each(

function(i) {
    $(this).text('list element ' + i);
});

function indexAmongSiblings(elem) {
    if (!elem) {
        return false;
    }
    var that = elem;
    var parent = that.parentNode;
    var siblings = parent.childNodes;
    var elemSiblings = [];
    for (var s = 0, numberOf = siblings.length; s < numberOf; s++) {
        if (siblings[s].nodeName != '#text' && siblings[s].tagName != undefined) {
            elemSiblings.push(siblings[s]);
        }
    }
    for (var e=0,l=elemSiblings.length; e<l; e++){
        if (elemSiblings[e] == elem){
            console.log('Element number: ' + e + ' among its siblings.');
        }
    }
}

var elements = document.getElementsByTagName('*');

for (var i = 0, len = elements.length; i < len; i++) {
    elements[i].onclick = function(e) {
        e.stopPropagation();
        indexAmongSiblings(this);
    };
}

JS Fiddle demo .


编辑以上内容以展示如何将元素的索引及其兄弟元素分配给变量:

$('li').each(

function(i) {
    $(this).text('list element ' + i);
});

function indexAmongSiblings(elem) {
    if (!elem) {
        return false;
    }
    var that = elem;
    var parent = that.parentNode;
    var siblings = parent.childNodes;
    var elemSiblings = [];
    for (var s = 0, numberOf = siblings.length; s < numberOf; s++) {
        if (siblings[s].nodeName != '#text' && siblings[s].tagName != undefined) {
            elemSiblings.push(siblings[s]);
        }
    }
    for (var e=0,l=elemSiblings.length; e<l; e++){
        if (elemSiblings[e] == elem){
            // the following returns the index-point amongst siblings
            return e;
        }
    }
}

var elements = document.getElementsByTagName('*');

for (var i = 0, len = elements.length; i < len; i++) {
    elements[i].onclick = function(e) {
        e.stopPropagation();
        var thisIndex = indexAmongSiblings(this);
        // the thisIndex variable now holds the returned index-point
    };
}

编辑以回应 OP 对其他答案留下的评论:

I want the number/sequence position of a specific element(e.g ) compared to equal elements(e.g ) in the whole DOM.

Citation .

以下函数将获取并返回被点击元素在文档中其他同类型标签中的索引位置(实际上比上面的要简单一些):

function indexAmongSameTags(elem) {
    if (!elem || !elem.tagName) {
        return false;
    }

    var thisIs = elem.tagName.toLowerCase(),
        sameAs = document.getElementsByTagName(thisIs);

    for (var i=0,len=sameAs.length; i<len; i++){
        if (sameAs[i] == elem){
            console.log('You clicked ' + thisIs + ' of index position "' + i + '" among ' + len + ' other ' + thisIs + ' elements');
            return i;
        }
    }

}

var elements = document.getElementsByTagName('*');

for (var i = 0, len = elements.length; i < len; i++) {
    elements[i].onclick = function(e) {
        e.stopPropagation();
        var indexPosition = indexAmongSameTags(this);
        console.log(indexPosition);
    };
}

JS Fiddle demo .

引用资料:

关于html - 我怎样才能得到一个元素的位置编号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8555061/

相关文章:

javascript - CSS/HTML 中的图像转换 (?)

python - 如何处理 Firefox 二进制默认位置?

firefox - 开发一个适当的Firefox扩展(不是首先通过编码到xpi)?

java - Selenium WebDriver 升级导致 UnreachableBrowserException

java - 在 Java 中读取 XML 文件和获取元素属性时遇到问题

dom - 在浏览器中调试自定义 DOM 事件

javascript - 如何将一个 html div 重叠在另一个 div 上?

html - 如何根据屏幕尺寸调整图像

javascript - css 关键帧过渡的最佳方式

html - 如何在 JSF 1.2 下为 DIV 生成唯一 ID?