0

我有我制作的这个内部应用程序。它在 IE9(和所有其他浏览器)中运行良好,但一些内部用户仍在使用 IE8。

导致问题的行是:

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

我收到错误消息是“SCRIPT1010:预期标识符”,并且标记就在类中的 c 之前。

这是代码:

$(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
});
4

2 回答 2

3

基于 ECMAScript 3 的引擎,如 IE8 中的引擎,不允许将保留字用作带点符号的标识符。对于他们,您需要class使用括号表示法进行引用:

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

ECMAScript 5 更改了一些用例以允许使用标识符名称而不仅仅是标识符,包括使用点表示法。这就是它在 IE9 中工作的原因。

正如Marc 建议的那样,您也可以简单地使用classNameproperty ,因为这不是保留字。

于 2013-09-06T20:21:24.770 回答
1

如果你想在 HTML 中获取元素的类,你想使用className元素本身的属性:

var thisClass = $thisElement.className;
于 2013-09-06T20:14:08.773 回答