如果我不想使用'这个'作为一个对象并直接写入函数而不传递'这个'作为一个对象并直接写出this.src =""在函数中为什么不起作用?
<body>
<script type="text/javascript">
function picture(yolo){
yolo.src="3Nail.jpg";
}
function normal(yolo) {
yolo.src="4Nail.jpg";
}
</script>
<img onmouseover="picture(this)" onmouseout="normal(this)" src="1nail.jpg" alt="n1"/>
<img onmouseover="picture(this)" onmouseout="normal(this)" src="2nail.jpg" alt="n2"/>
答案 0 :(得分:2)
由于函数与事件处理程序无关,因此它们的this
引用了全局窗口对象。为了避免必须使用变量yolo
作为参数,您可以通过使用call
将其作为上下文调用它们来为函数提供此绑定,如下所示。
JS
function picture(){
this.src="3Nail.jpg";
}
function normal() {
this.src="4Nail.jpg";
}
HTML
<img onmouseover="picture.call(this)" onmouseout="normal.call(this)" src="1nail.jpg" alt="n1"/>
<img onmouseover="picture.call(this)" onmouseout="normal.call(this)" src="2nail.jpg" alt="n2"/>
答案 1 :(得分:1)
在img
标记内,this
指的是特定的img
元素。在函数内部,this
将为window
。通常,函数内的this
是指函数所属的对象。
因此,如果您在不从img
标记传递该元素的情况下调用该函数,该函数将无法知道它应该更新哪个元素。当然,您可以在函数内部使用查询选择器来获取所需内容 - 但这只有在您始终想要更新相同元素时才有效。