Attributes Javascript库.getAttr()函数不工作?

Attributes Javascript库.getAttr()函数不工作?,attributes,javascript,Attributes,Javascript,我正在开发自己的javascript库。该库有一个getAttr()函数,其操作如下:tex(选择器).getAttr(名称)以下是库的代码: (function(){ var tex = function(s){ return new tex.fn.init(s); }; tex.fn = tex.prototype ={ init : function(s){ if

我正在开发自己的javascript库。该库有一个
getAttr()
函数,其操作如下:
tex(选择器).getAttr(名称)以下是库的代码:

(function(){
        var tex = function(s){
            return new tex.fn.init(s);
        };
        tex.fn = tex.prototype ={
            init : function(s){
                if(!s){
                    return this;
                }
                else{
                    this.length = 1;
                    if (typeof s === "object"){
                        this[0] = s;
                    }
                    else if(typeof s === "string"){
                        var obj;
                        obj = document.querySelector(s);
                        this[0] = obj;
                    }
                    return this;
                }
            }
        }
        tex.fn.init.prototype = tex.fn;
        tex.fn.init.prototype = {
            attr : function(name, value){
            /*if(name && !value){
                return this[0].getAttribute(name);
            }else if(name && value){
                this[0].setAttribute(name,value);
            };*/
            this[0].setAttribute(name,value);
        },
        getAttr : function(name){
            return this[0].getAttribute(name);  
        },
        removeAttr : function(name){
            this[0].removeAttribute(name);
        },
        print : function(txt){
             this[0].innerHTML = txt;
        }
        };
        window.TechX = tex;
})();
以下是正文部分的代码:

<nav>
<ul>
<li><a id="MainDropper">Pick your method:</a>
    <ul>
        <li><a>book</a>
            <ul>
                <li><a data-val="Book" href="javascript:setType(this)">Book</a></li>
                   </ul>
                   </li>
            </ul>
    </li>
    </ul>
</nav>
因此,当我单击book链接时,邮件滴管应该有文本“book”。但是,我在库中得到一个错误,它说,“[object global]没有方法
GetAttribute
”。有人知道我如何解决这个问题吗


非常感谢。

这应该归功于Bergi,但为了提供答案,这里是

当您使用以下侦听器时:

<a onclick="code" ... >
但是,当使用href属性和javascript伪协议(aka“”)时,代码将作为全局代码执行,因此或多或少只是:

code;
HTML5表示,其行为就像插入了一个新的脚本元素,并将代码作为内容。因此,在侦听器函数(执行上下文)中,它将引用全局(窗口)对象

请注意,这里的浏览器行为可能有所不同(例如,javascript URL中声明的变量),因为在HTML5之前没有关于如何处理此类代码的规范,HTML5实际上只是尝试指定浏览器已经执行的操作的一个版本。以前,它是*的一部分,这是浏览器在W3C规范之前所做的所有DOM工作,而W3C规范并没有成为新规范的一部分


*DOM 0“…是Netscape Navigator 3.0版和Microsoft Internet Explorer 3.0版提供的HTML文档功能的混合体(未正式指定)。

您正在将
窗口
对象传递给
setType
,不是锚。所以用点击监听器替换href+javascript伪协议。@RobG非常感谢,修复了它。但是为什么我不能使用
href=“”
属性?顺便问一下,你能不能把它作为一个答案提交给我,这样我就可以把它标记为正确的。
function listener(){code}

listener.call(element);
code;