2015-07-24 2 views
0

У меня возникла проблема с методом 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; 
         } 
        } 
       } 
      } 
     } 
+0

1. Работает ли в других браузерах? Пробовали ли вы изучить объект с помощью 'console.log (invItems [i])', чтобы увидеть, что он на самом деле содержит? Что содержит скидкиXml? (Я могу догадаться из названия, но явным). И, наконец, можете ли вы предоставить действующую демо-версию проблемы здесь или где-то вроде jsfiddle? Сократите его до минимального кода, необходимого для воспроизведения проблемы. – Simba

+0

Вы не указали достаточно подробностей о своей веб-странице, чтобы предлагать много полезного совета, но похоже, что вы полагаетесь на унаследованное поведение в какой-то момент за пределами образца кода, который вы опубликовали. IE11 удаляет поддержку [много устаревшего поведения] (https://msdn.microsoft.com/en-us/library/bg182625 (v = vs.85) .aspx # legacyAPI) в пользу более современных подходов. Тот факт, что код работает в IE8 и устаревший режим документа, говорит. Например, как вы заполняете данные XML? Сравните типы данных между IE11 и IE8; вы должны найти свою проблему. –

ответ

0

Вы фактически не задать вопрос выше, так что я не уверен, что на лучший ответ,
Но это было бы возможно использовать свойство идентификатора вместо атрибута идентификатора, как правило, рекомендуется ?

invItems[i].id vs invItems[i].getAttribute("id") 

http://www.w3schools.com/jsref/prop_html_id.asp

Смежные вопросы