2013-09-06 4 views
0

У меня есть это внутреннее приложение, которое я сделал. Он отлично работает в IE9 (и во всех других браузерах), но некоторые из внутренних пользователей все еще находятся на IE8.Получение атрибута Class работает в IE9, но не IE8

Линия причиной проблемы является:

var thisClass = $thisElement.attributes.class.value; 

Я получаю сообщение об ошибке «SCRIPT1010: Ожидаемый идентификатор» и маркер непосредственно перед с в классе.

Вот код:

$(document).on('click', function(){ 
var $this = $(this); 
var $thisElement = $this.context.activeElement; 
if ($thisElement != null && $thisElement.attributes.type != null && $thisElement.attributes.type.value == "checkbox" ){ 
     var thisClass = $thisElement.attributes.class.value; 
     var thisValue = $thisElement.value; 
     if (thisValue == "All"){ 
      if($thisElement.checked){ 
       $('input[class="'+thisClass+'"]').each(function(i){ 
         var checkboxValue = $(this).val(); 
         $("#"+thisClass+checkboxValue).prop('checked',true); 
       }); 

      }else {    
       $('input[class="'+thisClass+'"]').each(function(i){ 
        var checkboxValue = $(this).val(); 
        $("#"+thisClass+checkboxValue).prop('checked',false); 
       });     
      }    
     }else // since the val is not = all we want to uncheck the all box if any of the bottom boxes is unchecked 
     if (!$thisElement.checked){     
       $("#"+thisClass+"All").prop('checked',false); 
     } 
     cnse.checkTheCheckboxes(); 
    }else{ 
     return; 
    };// end if it is a checkbox 
}); 
+0

класс - это ключевое слово –

ответ

1

Если вы хотите, чтобы получить класс элемента в HTML, вы хотите использовать атрибут className на сам элемент:

var thisClass = $thisElement.className; 
+0

Это работает как для IE8, так и для IE9. Интересно, что код выше работает отлично в IE9. Спасибо – itsNotABlanket

+0

@ user1368301 Ответ Джонатана объясняет, почему вы видите разницу между браузерами. Рад, что все работает для вас! –

3

Двигатели на основе ECMAScript 3, как и в IE8, не позволяют использовать зарезервированные слова в качестве идентификаторов с точечной нотацией. Для них, вам нужно процитировать class с помощью bracket notation:

var thisClass = $thisElement.attributes["class"].value; 

ECMAScript 5 сменило несколько случаев использования, чтобы разрешить использование Identifier Names rather than just Identifiers, в том числе с dot notation. Именно поэтому он работает в IE9.

Вы также можете просто использовать className property, как Marc suggested, так как это не зарезервированное слово.

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