У меня возникла проблема с методом getAttribute().Nodelist getAttribute IE11 Ошибка JavaScript
Это в настоящее время работает в IE8, но в IE11 я получаю ошибку Объект не поддерживает свойство или метод 'getAttribute'.
Такая же проблема возникает, когда я использую hasAttribute() в той же точке.
Ошибка генерируется, когда вы достигнете если (скидки [J] .getAttribute ("Идентификатор") == discountId), и если я пытаюсь console.log идентификатор, я получаю Undefined.
Мне удалось заставить его работать в IE11, работая в режиме совместимости, но это не вариант.
Это метод, который я использую в настоящее время.
if(discountsXml != null && discountsXml.documentElement != null) {
var invItems = discountsXml.documentElement.getElementsByTagName("invItem");
var invItemsCounter = invItems.length;
var i = 0;
for(i=0; i<invItemsCounter; i++) {
if(invItems[i].getAttribute("id") == invItemId) {
var discounts = invItems[i].childNodes;
var discountsCounter = discounts.length;
var j = 0;
for(j=0; j<discountsCounter; j++) {
if(discounts[j].getAttribute("id") == discountId) {
discount = true;
}
}
}
}
}
1. Работает ли в других браузерах? Пробовали ли вы изучить объект с помощью 'console.log (invItems [i])', чтобы увидеть, что он на самом деле содержит? Что содержит скидкиXml? (Я могу догадаться из названия, но явным). И, наконец, можете ли вы предоставить действующую демо-версию проблемы здесь или где-то вроде jsfiddle? Сократите его до минимального кода, необходимого для воспроизведения проблемы. – Simba
Вы не указали достаточно подробностей о своей веб-странице, чтобы предлагать много полезного совета, но похоже, что вы полагаетесь на унаследованное поведение в какой-то момент за пределами образца кода, который вы опубликовали. IE11 удаляет поддержку [много устаревшего поведения] (https://msdn.microsoft.com/en-us/library/bg182625 (v = vs.85) .aspx # legacyAPI) в пользу более современных подходов. Тот факт, что код работает в IE8 и устаревший режим документа, говорит. Например, как вы заполняете данные XML? Сравните типы данных между IE11 и IE8; вы должны найти свою проблему. –