У меня есть функция, которая в настоящее время использует вызовы DOM .getElementBy...
в JavaScript.DRY up htmlCollection to Array calls
var $ = function (selector) {
var elements = [];
var lastSelector = selector.substring(selector.search(/[^#.]+$/), selector.length);
if(selector.includes('#') !== true || selector.includes('.') !== true) {
elements.push(document.getElementsByTagName(lastSelector));
elements = Array.prototype.slice.call(elements[0]);
}
return elements;
};
Есть ряд других, если операторы в функции, используя код:
elements.push(document.getElementsByTagName(lastSelector));
elements = Array.prototype.slice.call(elements[0]);
или
elements.push(document.getElementsByClassName(lastSelector));
elements = Array.prototype.slice.call(elements[0]);
В идеале я хотел бы высыхают повторил:
elements = Array.prototype.slice.call(elements[0]);
, но я не могу определить его до if
, поскольку элементы еще не заполнены. Поэтому он пытается запустить код на пустой массив и ошибки.
Любые предложения?
Одна идея, что вы можете сохранить функцию «Array.prototype.slice.call» в меньшем пространстве имен, как «callElm = Array.prototype.slice.call» и n "callElm (элемент [0])". Кроме этого, почему бы вам не преобразовать его в функцию? – master565
'return Array.prototype.slice.call (элементы [0]);'? – haim770
@ haim770 также использует getElementsById, который не нажимает htmlCollection, поэтому бросает ошибку на срез. Извините, но это было непонятно, спасибо. – Joe