我希望在每个html元素上面添加一些方法,便如
HTMLElement.prototype.addClass = function(classname){
    this.className += " " + classname;
};
但是在IE6下该途径无效,是否有好的解决方案?我希望我的API是这样子的
document.getElementById(id).addClass
document.getElementById(id).firstChild.addClass
document.body.addClass我不喜欢 $(id).addClass

解决方案 »

  1.   

    Object.prototype.addClass = function(classname){if(isHtmlControl(this))
        this.className += " " + classname;else alert('该对象不是html元素,不支持className属性!')
    };
    /*判断一个对象是否是html元素*/
    function isHtmlControl(obj) {    
      
        var d = document.createElement("div");   
        try{   
            d.appendChild(obj.cloneNode(true));   
            return obj.nodeType==1 ? true : false;   
        }catch(e){   
            return obj==window || obj==document;   
        }   
      

  2.   

    #5 的方法倒是可以实现, 但是Object对象太顶端了 会带来很多不必要的麻烦。不是我想要的。而且你的isHtmlControl方法实现太复杂了
    个人以为如下即可。function isHtmlControl(element){
        return element.nodeType === 1;
    }