Как изменить не прямого потомка на чистом js? Здравствуйте, Есть такой код, например: HTML:
JS:$(function(){ var str = ""; $(".div-class-0").each(function(i,e){ console.log($(this).attr("attr")+" / "+$(this).find(".span-class").attr("attr")); }); }); На выходе получается:аттрибут 1-го div / аттрибут 1-го span аттрибут 2-го div / аттрибут 2-го span аттрибут 3-го div / аттрибут 3-го span Как сделать то же самое, но без jQuery? А именно интересует как качественно заменить .find() Не хочу использовать querySelectorAll(), потому что беспокоюсь за строгость наследования. Я хочу быть уверен что в каждой строке на выходе я увижу аттрибуты от div'a и span'a которые 100% относятся к одному блоку. Извиняюсь, если смазано объяснил, я очень старался :) И еще возможно я зря переживаю и действительно вот такое решение вполне сгодится:var divclass0_arr = document.querySelectorAll(".div-class-0"); var spanclass_arr = document.querySelectorAll(".span-class"); for(i=0;i console.log(divclass0_arr[i].getAttribute("attr")+" / "+spanclass_arr[i].getAttribute("attr")); } Но что-то мне подсказывает, что оно очень хрупкое, чуть что не так с селекторами и все посыплется :( Заранее спасибо!
Для достижения того же результата без использования jQuery и без использования querySelectorAll() можно использовать методы DOM объектов. Вот как это можно сделать:
document.addEventListener("DOMContentLoaded", function() { var divs = document.getElementsByClassName("div-class-0"); var spans = document.getElementsByClassName("span-class"); for (var i = 0; i < divs.length; i++) { var divAttr = divs[i].getAttribute("attr"); var spanAttr = spans[i].getAttribute("attr"); console.log(divAttr + " / " + spanAttr); } });
Этот код будет работать так же, как и ваш jQuery код, но без использования jQuery. Он безопасен, так как он ищет элементы с помощью классов, которые соответствуют структуре HTML, и параллельно получает атрибуты у соответствующих div и span элементов.
Для достижения того же результата без использования jQuery и без использования querySelectorAll() можно использовать методы DOM объектов. Вот как это можно сделать:
document.addEventListener("DOMContentLoaded", function() {var divs = document.getElementsByClassName("div-class-0");
var spans = document.getElementsByClassName("span-class");
for (var i = 0; i < divs.length; i++) {
var divAttr = divs[i].getAttribute("attr");
var spanAttr = spans[i].getAttribute("attr");
console.log(divAttr + " / " + spanAttr);
}
});
Этот код будет работать так же, как и ваш jQuery код, но без использования jQuery. Он безопасен, так как он ищет элементы с помощью классов, которые соответствуют структуре HTML, и параллельно получает атрибуты у соответствующих div и span элементов.