1

我是初学者,搜索后找不到答案。

在我的例子中,我正在寻找一个

<a href="bla" onclick="dah">some text here</a>

我想找到这个特定的元素,所以我可以用它做一些事情。

编辑:我唯一知道该元素的独特之处是文本“这里有一些文本”,这就是为什么我想根据它找到它的原因。

4

4 回答 4

3

将 id 放在元素上:

<a href="bla" onclick="dah" id='myEl'>some text here</a>

来自 javascript:

var myEl = document.getElementById('myEl') // gives the element
于 2012-08-23T23:33:28.900 回答
1

您还可以将伪选择器 :contains 与jQuery 库一起使用。

示例 2

$('div:contains("test")').css('background-color', 'red');​

http://jsfiddle.net/9z5du/

示例 2

<script>
    $("div:contains('John')").css("text-decoration", "underline");
</script>
于 2012-08-23T23:35:19.547 回答
1

如果您知道该元素是一个链接,您可以先调用getElementsByTagName [docs]来缩小搜索范围:

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

然后你必须遍历元素并测试哪个包含你正在寻找的下一个:

var element = null;
for(var i = 0, l = elements.length; i < l; i++) {
    if(elements[i].innerHTML === 'some text here') {
        // found the element
        element = elements[i];
        break;
    } 
}

if(element) {
    // found the element, lets do something awesome with it
}

有多种方法可以获取元素的内容,使用Node#innerText(IE) 或Node#textContent(W3C) 是另一种选择。在比较之前,您可能必须先修剪文本。

如果 HTML 如您的帖子中所示,

if(elements[i].firstChild || elements[i].firstChild.nodeValue)

更加优雅。

有关 DOM的MDN 文档可能会有所帮助。

如果您可以修改 HTML,那么添加 ID 并使用getElementById将是更好的选择。

于 2012-08-23T23:42:45.527 回答
0

试试这个

function getit()
{
  var elems = document.getElementsByTagName('a');

  for(var i=0; i<elems.length; i++)
  {
     var text = elems[i].childNodes[0] != null ? elems[i].childNodes[0].nodeValue : '';

     if(text == "some text here")
       doSomethingWith(elems[i]);
  }
}
于 2012-08-23T23:47:03.490 回答