Есть html:
<table id="table"><template></template></table>
Я задал такую конструкцию:
function gId(id){return document.getElementById(id)}
Node.prototype.qS = function(s){return this.querySelector(s)}
В коде пишу:
var t=gId('table');
console.log(t.qS("template"));
выдает ошибку:
TypeError: t.qS is not a function
где я ошибаюсь?
не стоит модифицировать Node или Object.
лучше написать вот так:
function gId(id) {
let el = document.getElementById(id);
if (el && !el.qS) el.qS = qS.bind(el)
else throw new Error('что-то не так')
return el
}
function qS(s) {
return this.querySelector(s)
}
const t = gId('table');
console.log(t.qS("template"));
<table id="table"><template></template></table>
Объекты DOM с точки зрения javascript являются exotic object. В них некоторые языковые механизмы могут отсутствовать или работать странно в зависимости от браузера.
Если вам важна поддержка всех браузеров - то придется использовать другие механизмы. Например, можно обойтись обычной функцией:
function qS (el, selector) {
return el.querySelector(selector);
}
Или же можно сделать свой класс-обертку.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости