Javascript无法识别“this”对象

时间:2012-11-21 09:27:05

标签: javascript html prototype

请看这个小提琴:

http://jsfiddle.net/GSHsH/9/

HTML:

<div id="papa" onclick="anything(this);">Blabla</div>​

JS:

function anything(theObj){
    window.alert(theObj.innerHTML);
}

我不明白为什么函数“任何东西”都没有重新调整。 (使用原型)

2 个答案:

答案 0 :(得分:6)

并不是它不会识别this - 由于您在jsfiddle中进行了设置,它无法识别方法anything - 将javascript范围限定为onLoad。如果您选择了no wrap (head),它可以正常工作:http://jsfiddle.net/GSHsH/11/

更详细一点。你设置的方式,这是注入jsfiddle输出框架的内容:

Event.observe(window, "load", function(){

function anything(theObj){
    window.alert(theObj.innerHTML);
}

});

请注意,方法anything不在全局(窗口)范围内,它位于特定函数的范围内。这意味着它对页面上的元素不可见。

我设置它的方式是你得到的:

function anything(theObj){
    window.alert(theObj.innerHTML);
}

这只是在页面头部定义的普通旧函数 - 现在可以从页面上的元素访问。

答案 1 :(得分:1)

因为jsfiddle生成了这样的代码:

Event.observe(window, "load", function(){
    function anything (theObj){
        window.alert(theObj.innerHTML);
    }
});

因此您的“任何”功能不在全球范围内。这将有效:

window.anything = function (theObj){
    window.alert(theObj.innerHTML);
}