Remove all the top-level <img> elements in the body
      var imgElements = bodyElement.getElementsByTagName("table");
      for (i=0; i<imgElements.length; i++) {
        var imgElement = imgElements.item[i];
        // Print out some information about this element
        var msg = "Found an img element!";
        var atts = imgElement.attributes;
        for (j=0; j<atts.length; j++) {
          var att = atts.item(j);
          msg = msg + "\n  " + att.nodeName + ": '" + att.nodeValue + "'";
        }
        alert(msg);
        bodyElement.removeChild(imgElement);
      }上面代码中,为什么我程序执行到var atts = imgElement.attributes;
总是报错,报错误:‘attributes’为空或不是对象?
???

解决方案 »

  1. 你先判断下imgElement.hasAttributes(),有在往下走,估计是你在  for (j=0; j<atts.length; j++) {
    出的错.
      

  2. 报var atts = imgElement.attributes; 这个行错误,然后我觉得每个table都又属性直的,  for (i=0; i<tblElements.length; i++) {
            var tblElement = tblElements.item[i];
            // Print out some information about this element
            var msg = "Found an table element!";
           // alert(msg+tblElement.attributes.length);
            var atts = tblElement.attributes;
            if (tblElement.hasAttributes()){
               for (j=0; j<atts.length; j++) {
               var att = atts.item(j);
               msg = msg + "\n  " + att.nodeName + ": '" + att.nodeValue + "'";
               if ( att.nodeName.toLowerCase()=="id" && att.nodeValue.toLowerCase()=="tblfcry"){
                  alert("find fcrytbl");
                  frcrtbl = tblElement;
                 }
               }
            }
    改成上面情况,还是var atts = tblElement.attributes;
     这里报错::‘attributes’为空或不是对象。
      

  3. tblElement  有可能为Element,如果为Eelement那就是有attributes的,如果tblElement 是TextNode那就没有了,所以你 var atts = tblElement.attributes;就出错了呀,把var atts = tblElement.attributes;放在判断里面估计就没问题了
      

类似问题 »