对于页面(" Bill4Time"),仪表板显示一个表格,用于显示时间条目和输入新的时间条目,但是几个控制元素没有与它们相关联的ID。有趣的是,添加新的时间输入行(右下角带有小号加号的剪贴板图标)的控件总是具有相同的索引号(因此我可以选择Document.all("index_no")
来添加一个新的时间条目。但是一旦你通过输入一个新的时间条目编辑该行,控制图标就会改变(通用剪贴板,就像表中所有其他时间条目一样),索引变为动态 - 并且没有id但是,我发现父元素(即表格单元格)确实有一个永不改变的唯一ID(虽然它是最近添加的时间条目),所以目前我去了它(使用{{1然后发送一个{tab}移动到控制元素(并发送{enter}以转到正确的详细信息页面。)
如果我可以得到unique_id元素的索引号,并将其递增一,我可以更可靠地获得我想要的控件,所以我的问题是,如果一个人通过id得到一个DOM元素,怎么能一个找到它的索引号?
当我在这里(或谷歌)搜索时,我获得了很多结果,用于查找父项中包含的元素的索引,或基于.selectedIndex等的结果,我想我可以循环遍历所有DOM元素直到找到Document.getElementByID("unique_id").focus()
的那个,但应该有更好的方法来获取所选元素的索引号。
TIA,
答案 0 :(得分:0)
你提到了循环,但我认为可能是这样做的方法,因为ID是唯一的。通过其ID获取匹配元素会为您提供该元素,而不是元素数组(如果您按类匹配),这些元素都将具有索引。
如果您知道要关注的表的ID,那么如果您不想使用jQuery,则可以执行类似的操作。
//get all the tables
var thisEleArr = document.getElementsByTagName('table');
var indexOfTableIWant;
//loop through the array of tables
for (var i=0;i<thisEleArr.length;i++) {
//if the id of the current table in the loop matches the known id
if (thisEleArr[i].getAttribute('id')==='knownTableID') {
//get the index of it
indexOfTableIWant = i;
}
}
答案 1 :(得分:0)
至少如果使用IE和AutoHotkey,这将为您提供索引
index := wb.document.getElementByID("unique_id").sourceIndex
但如果您有父元素
,则不需要索引element := wb.document.getElementByID("unique_id").childnodes[0]
很多时候没有ID的元素通常都有Name或Class属性,它们都可以用来找到你需要的元素......