var ty={
o:function(v){
return!Array.isArray(v)?typeof v==='object':!1;
},
a:function(v){
if(v!=null&&typeof v==='object')
if(v.length>=0)
return!0;
return Array.isArray(v);
}
}
function isObject(item) {
return (typeof item === "object" && !Array.isArray(item) && item !== null);
}
function isObject(item) {
return (typeof item === "object" && !Array.isArray(item) && item !== null);
}
v==null?!1:Array.isArray(v);
NodeList.addEventListener
var divs=document.getElementsByTagName('div')
for(var i of divs)
console.log(divs[i])//undefined
var divs=document.getElementsByTagName('div')
for(var i=0;i<divs.length;i++)
console.log(divs[i])//div element
var arr=[];
arr.fn=function(){return!0}
arr.fn();// true
Тогда я не понимаю как работать с NodeList
Вы меня окончательно запутали
Вариант на который вы намекаете не будит работать (т.к. по вашим словам это объект)
а вариант который я хочу использовать вы запрещаете использовать
ответьте просто мне на один вопрос: как перебирать элементы находящиеся в NodeList
Я понимаю что это не объект.
Javascript очень гибкий и мы можем сделать к примеру вот так
И NodeList можно воспринимать как массив не смотря на то что он не имеет методов присущих обычным массивам.
Пример
Элементы в NodeList, можно обработать следующим образом:
for (var i = 0; i < myNodeList.length; ++i) {
var item = myNodeList[i]; // Вызов myNodeList.item(i) необязателен в JavaScript
}
NodeList используется подобно массивам, и потому может возникнуть закономерное желание использовать в нём методы, предоставляемые Array.prototype. Однако NodeList не реализует методы, подобные таковым у Array.
arr =[1,2,3]
for(var i=0; i<arr.length; i++){
console.log(arr[i])
}
arr={1:'a'}
for(var i=0; i<arr.length; i++){
console.log(arr[i])
}
var arr={};
if(ty.a(arr))
for(var i=0; i<arr.length; i++){
//...
}
. Все что мне нужно это отделить объекты которые можно обрабатывать циклом
document.getElementsByTagName('div')
document.getElementById('middle')
var elem=document.getElementsByTagName('div');
for(var i=0; i<elem.length; i++)
elem[i].style.backgroundColor='rgb(255,0,0)'
var elem=document.getElementById('middle')
elem.style.backgroundColor='rgb(255,0,0)'
как вы предлагаете обрабатывать код который я привел выше ?
функция для присваивания красного цвета элементам. Может принимать как объект так и массив объектов. А зачем плодить повторяющийся код ?
if (data instanceof HTMLCollection || data instanceof NodeList) {
// итерация коллекции
} else {
// работа с элементом
}
if (obj instanceof Array) console.log('obj isArray!');