0

eval() に関して問題があります。オブジェクト javascript を使用してユーザーが送信したデータを検証しています。

例えば

for(var i=0;i<count;i++){

     switch(caseType){
       case: 'Group':
        ### it will execute the ff code
        ### it will call MustChecked function

        if(!eval(this.MustChecked(getAttribute('class'), getAttribute('min'), getAttribute('max')))) {

           ####this will alert all the errors..
          this.AddError(i, getAttribute("msg"));
        }
     }


}

このコードから、それはすべてのエラーを警告します...

更新: MUSTCHECKED 関数

MustChecked : function(name, min, max)
  {
      var groups = document.getElementsByClassName(name);
      alert(groups);
      //console.log(name + ":" + groups.length);
      var hasChecked = 0;
      min = min || 1;
      max = max || groups.length;
      for(var i=groups.length-1;i>=0;i--)
          if(groups[i].checked) hasChecked++;
          return min <= hasChecked && hasChecked <= max;
  },

アップデート V1.1

私はこのようにしてみました

getElementsByClassName : function (className) {
        if (document.getElementsByClassName) { 
          return document.getElementsByClassName(className); 
        }
        else { 
            return document.querySelectorAll('.' + className); 
        } 
},

これはIE8では機能しますが、IE7では機能しません...運がいいですか?

4

1 に答える 1

3

メソッドはgetElementsByClassNameIE7/8 ではサポートされていません。そして、それをMustChecked関数で使用します。

「存在しない」のようにサポートされていません。

シムをご用意しております。すぐにグーグルで検索すると、いくつかの結果が得られます。querySelectorAllまたは、はるかに一般的なSizzle または単に shim を使用することもできます。

機能がサポートされているかどうかを知りたい場合は、caniuse.comが適切なリソースです。

于 2013-01-16T10:11:53.550 に答える