Javascript查找元素并单击而不使用css类

Javascript查找元素并单击而不使用css类,javascript,html,Javascript,Html,我有一些HTML,比如 <ul class="sortword"> <li> <div>ABC</div> </li> <li> <div>DEF</div> </li> </ul> 基础知识 DEF 如何使用Javascript查找并单击DEFtagsJQuery 使用: $(“div:cont

我有一些HTML,比如

<ul class="sortword"> 
    <li>
        <div>ABC</div>
    </li>
    <li>
        <div>DEF</div>
    </li>
</ul>
  • 基础知识
  • DEF
如何使用Javascript查找并单击
DEF
tags

JQuery 使用:


$(“div:contains('DEF'))。单击()

您可以在不使用jQuery的情况下通过选择多个元素并循环它们来完成此操作,但使用它将使此代码段非常简短且易于阅读。请确保在页面上包含JQuery,并使用如下链接

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

  • 基础知识 DEF
var myList=document.getElementsByClassName(“sortword”)[0].getElementsByTagName(“li”)[0]
  • 基础知识 DEF

您可以使用
textContent
,如下代码所示:

var el = document.querySelectorAll(‘ul li div’), desire;
for (var i = 0; i < el.length; i ++) {
   if (el[i].textContent === 'DEF') { desire = el[i]; } 
   break;
}
var el=document.queryselectoral('ul li div'),desire;
对于(变量i=0;i


然后use可以在以后使用
desire
变量。

有多种方法可以做到这一点,但是你希望这个
javascript
什么时候执行,页面上还有多少其他元素使用
名称
sortword
?你说的
查找
是什么意思?我可以在下面看到很多好的答案,所以我想我会提供另一种方法。此方法将使用
querySelectorAll
以特定的
ul
文档为目标。评估
以筛选/查找具有预期内容的div。您可以将其修改为一个函数,以便用于多个元素或过滤。此外,这里还有一个将此方法转换为函数的示例,这样您就不会局限于一个特定项。我很抱歉。我想找到ABC并单击它,或者找到DEF并单击它。。。还有一个非jquery的答案,但这个问题似乎被否决了。因为问题中没有标记或提到
jquery
,所以我认为您应该提供有关包含
jquery
*库的小细节,并可能将其转换为一个工作片段,以便更好地进行示例?很好,您已经包含了一个指向文档的链接
:contains()选择器
。这不会触发具有特定内容的
div
单击事件,因此这不是OP要求的。此外,这将只针对第一个列表项
li
,以及所有子元素。很抱歉。我要查找ABC并单击它,或查找DEF以单击它而不是最后一个孩子这需要客户端单击,这将删除询问如何从查找特定元素中触发
click
事件的原因。此外,这甚至没有针对特定的元素,它只是为类
.sortword
ul
的子类中的每个div绑定了一个单击事件,这是真的,但问题不清楚,但op会随着答案的添加而慢慢澄清需求。由于op仍在检查,我将继续猜测预期结果。编辑的目的是通过jQuery触发点击,而不仅仅是为了听它们。@JasonB这就是为什么我只在评论中提供一些小例子,除非/直到问题变得出乎意料。这使我能够给出一个可靠的答案,而不是猜测,可能给出错误的答案或将OP发送到错误的方向。这是一个非常好的方法,但正如您在
console.log()中看到的那样,这是针对页面中的每个人的
“有了它,那么针对特定类和div元素不是更好吗?”?微小的更改,但似乎比在不必要的元素上运行
forEach()
更符合逻辑。一个小改动-
document.querySelectorAll('.sortword div')
这将再次针对DOM中的所有
div
,并循环使用它们,这是不必要的。@NewToJS这就是他想要的。他不想添加类或id,因此我如何优化代码?如果您运行此操作并查看浏览器控制台,您将看到它记录解决方案正在执行的页面中的所有
div
s,但
中断也会导致问题,使其无法成为有效的解决方案。通过一个简单的选择器更改,您可以从控制台上看到这将更加方便仍然会导致问题,您应该使用
document.querySelectorAll()
而不是
querySelectorAll()
。请在发布之前运行源代码。我还建议您在显示的源代码中使用正确的引号。break;在循环到下一个元素之前执行,无论从
if
条件返回什么。您使用的是一个速记条件,但如果您包含它
if(condition){source if true}
,则中断不会导致在变量中存储一个元素的问题。
var el = document.querySelectorAll(‘ul li div’), desire;
for (var i = 0; i < el.length; i ++) {
   if (el[i].textContent === 'DEF') { desire = el[i]; } 
   break;
}