请看这个小提琴:
HTML:
<div id="papa" onclick="anything(this);">Blabla</div>
JS:
function anything(theObj){
window.alert(theObj.innerHTML);
}
我不明白为什么函数“任何东西”都没有重新调整。 (使用原型)
答案 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);
}