1

请看这个小提琴:

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

HTML:

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

JS:

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

我不明白为什么“任何东西”这个功能没有被重新识别。(使用原型)

4

2 回答 2

6

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

更详细一点。您设置它的方式,这就是注入到 jsfiddle 输出帧中的内容:

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

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

});

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

我设置它的方式你得到这个:

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

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

于 2012-11-21T09:29:24.583 回答
1

这是因为 jsfiddle 会像这样生成您的代码:

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

所以你的“任何东西”功能不在全球范围内。这将起作用:

window.anything = function (theObj){
    window.alert(theObj.innerHTML);
}
于 2012-11-21T09:35:29.650 回答