[英]get a specific div class from div and based on that do a function
[英]Get div from div list with specific class
我有div
list
,并希望在包含像state-expanded
这样的指定类时得到div
。 例如,我有两个不同的divs
:
<div class="row-popular state-expanded no-sibling-group">
<span class="cell cell-id-name" style="flex: 1 1 63px;">
<span>TEST</span>
</span>
</div>
<div class="row-popular state-collapsed no-sibling-group">
<span class="cell cell-id-name" style="flex: 1 1 63px;">
<span>OTHER</span>
</span>
</div>
第一个div
有状态state-expanded
和第二个state-collapsed
。 我想要得到的值span
,其中类div
是state-expanded
。
这份list
声明:
var allDivs = document.getElementsByTagName('div');
在我上面写的示例中,它应该返回值TEST
。 请只JavaScript
- 而不是jquery
等。
知道怎么弄它?
您可以使用
使用javascript并使用jQuery的document.getElementsByClassName('state-expanded')
。
$('.state-expanded')
试试这个 - var neededDiv = document.getElementsByClassName('state-expanded')[0]
或者你也可以像这样使用querySelector
:
var neededDiv = document.querySelector('.state-expanded');
要么
var neededDiv = document.querySelector('.state-expanded span span');
如果您需要使用'TEST'代码获得嵌套跨度。(根据您的示例)
这是另一个答案。
var data = document.getElementsByClassName('state-expanded')[0];
var data1 = data.getElementsByTagName('span')[1].innerHTML;
console.log(data1);
输出: TEST
它将要做的是,首先在数据变量中它将获得“状态扩展”div,然后在第二行中我们获得第二个值范围(innerHTML),因此它将返回TEST。
这是一个小提琴: https : //jsfiddle.net/9p9ygd01
尝试使用以下代码...
$(document).ready(function(){ var $element = $('.state-expanded span span').html(); alert($element); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <div class="row-popular state-expanded no-sibling-group"> <span class="cell cell-id-name" style="flex: 1 1 63px;"> <span>TEST</span> </span> </div> <div class="row-popular state-collapsed no-sibling-group"> <span class="cell cell-id-name" style="flex: 1 1 63px;"> <span>OTHER</span> </span> </div>
您可以使用querySelectorAll :
var txt = document.querySelectorAll('div.state-expanded span span')[0].textContent;
querySelectorAll将返回包含在带有state-expanded类的div中的span中的span元素。
querySelectorAll返回一个NodeList,但因为在你的情况下只有一个元素你可以获取第一个元素(即:[0])。
对于包含在其中的文本,您可以使用textContent属性。
如果您需要循环使用querySelectorAll获得的所有结果,您需要将NodeList转换为数组,而不是使用forEach函数,如:
[].slice.call(document.querySelectorAll('div.state-expanded span span')).forEach(function(currValue, index) {
alert(currValue.textContent);
});
window.onload = function() { var txt = document.querySelectorAll('div.state-expanded span span')[0].textContent; document.body.innerHTML += '<br>Result: ' + txt; [].slice.call(document.querySelectorAll('div.state-expanded span span')).forEach(function(currValue, index) { document.body.innerHTML += '<br>Result in forEach loop: index=' + index + ' textContent=' + currValue.textContent; }); };
<div class="row-popular state-expanded no-sibling-group"> <span class="cell cell-id-name" style="flex: 1 1 63px;"> <span>TEST</span> </span> </div> <div class="row-popular state-collapsed no-sibling-group"> <span class="cell cell-id-name" style="flex: 1 1 63px;"> <span>OTHER</span> </span> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.