#javascript #jquery
#javascript #jquery
Вопрос:
Я получаю ошибку типа: c.совпадение не является функцией в консоли поиска браузера, когда я пытаюсь выполнить этот код. где я допускаю ошибку?
(function() {
function addIcon(el, entity) {
var html = el.innerHTML;
el.innerHTML = '<span style="font-family: 'B3-Line-Icons'">' entity '</span>' html;
}
var icons = {
'b3icon-scale': 'amp;#xe900;',
'b3icon-file-text': 'amp;#xe901;',
'b3icon-skyscraper': 'amp;#xe902;',
'b3icon-girl': 'amp;#xea67;',
'0': 0
},
els = document.getElementsByTagName('*'),
i, c, el;
for (i = 0; ; i = 1) {
el = els[i];
if(!el) {
break;
}
c = el.className;
c = c.match(/b3icon-[^s'"] /);
if (c amp;amp; icons[c[0]]) {
addIcon(el, icons[c[0]]);
}
}
}());
Комментарии:
1. Можете добавить свой фрагмент кода и поделиться им здесь?
Ответ №1:
Я бы посоветовал вам упростить ваш запрос к dom. До сих пор вам, похоже, нужны все элементы, но почему бы просто не запросить те, где className начинается с b3icon
?
Так что измените
document.getElementsByTagName(*)
Для
document.querySelectorAll('[class^="b3icon]')
После чего логика цикла for становится намного проще
const elements = document.querySelectorAll('[class^="b3icon"]');
for (let element of elements) {
const [match] = element.className.match(/b3icon-[^s'"] /);
if (match amp;amp; icons[match]) {
addIcon(element, icons[match]);
}
}
И вы можете увидеть пример в этом фрагменте кода
(function() {
function addIcon(el, entity) {
var html = el.innerHTML;
el.innerHTML = '<span style="font-family: 'B3-Line-Icons'">' entity '</span>' html;
}
const icons = {
'b3icon-scale': 'amp;#xe900;',
'b3icon-file-text': 'amp;#xe901;',
'b3icon-skyscraper': 'amp;#xe902;',
'b3icon-girl': 'amp;#xea67;',
'0': 0
};
const elements = document.querySelectorAll('[class^="b3icon"]');
for (let element of elements) {
const [match] = element.className.match(/b3icon-[^s'"] /);
if (match amp;amp; icons[match]) {
addIcon(element, icons[match]);
}
}
}());
<span>Not so important</span>
<span class="b3icon-girl"></span>
Ответ №2:
el.className, вероятно, не определено (или не является строкой).
Ответ №3:
Проверьте значение el.className
Проверьте, является ли значение в c строковым.