javascript查找没有id的节点

时间:2012-12-22 20:13:43

标签: javascript html getelementbyid

由于我正在使用的Javascript库的限制,我无法为<div>分配ID。不幸的是,我不知道如何将Tipped(一个Javascript工具提示库)中的Tooltip对象附加到没有id的元素。我不知道这是否可行,但我试图通过其他方式找到对象,希望能够修改id。

我正在寻找的元素是工具栏上的按钮,但它不是HTML按钮。它是一个<div>,它具有CSS样式和Javascript事件,使其看起来像一个按钮。我知道父母的班级名字,我知道祖父母<div>的身份证,但这就像我所知道的那样。问题的一部分是,一旦你获得对它们的引用,对于如何迭代地操作HTML对象似乎没有很好的参考。我见过很多像这样的例子:

var x = document.getElementsById("asdf")

但没有后续代码显示如何实际执行任何操作。什么在x?它有什么方法?我知道innerHTML和innerTEXT,但我无法弄清楚它们是否适用于x,x的子项或???。 Chrome控制台有一点帮助,但我基本上都输了。

这是我的按钮的相关代码:

DIVs in my page (no id on the Export button)

如您所见,“导出”按钮上没有ID,但父级有一个类名,祖父母有一个id。另一个障碍是祖父母的身份不是静止的。它始终以“dhxtoolbar”开头,页面上只有一个工具栏,但我无法进行正则表达式搜索找到工具栏。

最终,我希望能够将Tipped工具提示附加到“导出”按钮。我认为Tipped需要一个id,但也许它不需要。无论如何,我想更多地了解如何遍历DOM,并作为奖励,弄清楚如何或如果我可以更改实时页面上元素的ID。感谢。

2 个答案:

答案 0 :(得分:2)

Tipped实际上接受任何CSS选择器作为参数。如果该类是唯一的,您可以这样定位:

Tipped.create('.dhx_toolbar_btn', 'some tooltip text');

或者如果类不是唯一的,您可以尝试通过树结构来定位它。举个例子:

Tipped.create('.header .sidebar .dhx_toolbar_btn', 'some tooltip text');

我在你的html中注意到按钮有空title属性(或者你的检查员可能只是添加了它们)。如果您可以为按钮设置title属性,Tipped会自动选择它。例如:

<div class="dhx_toolbar_btn" title="test title">

然后你只需要使用:

Tipped.create('.dhx_toolbar_btn');

Tipped将自动获取标题并使用它。

答案 1 :(得分:0)

这是我试图解释的:

var Obj         = document.getElementsByClassName("classname");
var ObjChildren = Obj[0].getElementsByTagName("tag")
var searchText = "string";

for (var i = 0; i < ObjChildren.length; i < i++) {
    if (ObjChildren[i].innerHTML == searchText) {
        console.log(ObjChildren[i].innerHTML);
    }
}