Javascript 通过';这';到onclick事件

Javascript 通过';这';到onclick事件,javascript,html,Javascript,Html,可能重复: 这样行吗 <script type="text/javascript"> var foo = function(param) { param.innerHTML = "Not a button"; }; </script> <button onclick="foo(this)" id="bar">Button</button> var foo=函数(参数) { param.innerHTML=“不是按钮”; }; 按钮

可能重复:

这样行吗

<script type="text/javascript">
var foo = function(param)
{
    param.innerHTML = "Not a button";
};
</script>
<button onclick="foo(this)" id="bar">Button</button>

var foo=函数(参数)
{
param.innerHTML=“不是按钮”;
};
按钮
而不是这个

<script type="text/javascript">
var foo = function()
{
    document.getElementId("bar").innerHTML = "Not a button";
};
</script>
<button onclick="foo()" id="bar">Button</button>

var foo=函数()
{
document.getElementId(“bar”).innerHTML=“非按钮”;
};
按钮

第一个方法是否允许我从其他地方加载javascript,以便对任何页面元素执行操作?

是的,第一个方法将对从其他地方调用的任何元素起作用,因为它总是使用 不考虑id的目标元素

检查这把小提琴


您可以随时以不同的方式调用function:
foo.call(this)
通过这种方式,您将能够在函数中使用
上下文

例如:

按钮​

var foo = function()
{
    this.innerHTML = "Not a button";
};

在JavaScript中,这个
总是指我们正在执行的函数的“所有者”,或者更确切地说,指函数作为方法的对象。当我们在页面中定义忠实的函数doSomething()时,它的所有者是页面,或者更确切地说是JavaScript的窗口对象(或全局对象)


您拥有的代码可以工作,但是是从全局上下文执行的,这意味着
引用全局对象

<script type="text/javascript">
var foo = function(param) {
    param.innerHTML = "Not a button";
};
</script>
<button onclick="foo(this)" id="bar">Button</button>

问某件事是否可行没有多大意义。最好测试您自己的命令,并澄清您想要使用的命令以及您不确定的命令。
是在调用时调用函数的对象。javascript中没有“所有者”的概念。如果在不使用对象的情况下调用函数,则
是全局对象(
浏览器中的窗口
)。例如:
函数f(){console.log(this);};o={a:f};o、 a();var b=o.a;b()太好了!这有什么缺点吗?
<script type="text/javascript">
document.getElementById('bar').onclick = function() {
    this.innerHTML = "Not a button";
};
</script>
<button id="bar">Button</button>