まず簡単な例を見てみましょう:
まったく問題ありません。
では、どのような場合に使用できなくなるのでしょうか?
fuction method() { alert(this.value); } <input type="text" onblur="method()"/>
method() は応答関数によって呼び出される関数であるため、これは不可能です。
では、この状況では何をすべきでしょうか?
方法 1:
fuction method(btn) { alert(btn.value); } <input type="text" onblur="method(this)"/>
問題ありません!
方法 2:
fuction method() { alert(window.event.srcElement.value); } <input type="text" onblur="method()"/>
問題ありません! window.event.srcElement はイベントをトリガーしたコントロールを取得します
もう少し複雑な例を見ていきます
<head> <script type="text/javascript"> function InitEvent() { var inputs = document.getElementsByTagName_r("input"); for (var i = 0; i < inputs.length; i++) { inputs[i].onblur = OnblurEvent; } } function OnblurEvent() { // OnblurEvent是onblur的响应函数,而不是被响应函数调用的函数 // 所以可以用this来获取发生事件的对象 if (this.value.length > 0) { this.style.backgroundColor = "white"; } else { this.style.backgroundColor = "red"; } } </script> </head> <body onload="InitEvent()"> <input id="Text1" type="text" /> <input id="Text2" type="text" /> <input id="Text3" type="text" /> </body> </html>
この 2 つの違いとつながりを見てみましょう
これ:
例を見てみましょう:
<html> <title>this与srcElement的区别</title> <head> <script type="text/javascipt>" function btnClick(){ alert(this.value); } </script> </head> <body> <input type="button" value="单击" onclick="btnClick()"/> </body> </html>
この時点で表示される答えは「未定義」です。これは、関数呼び出し時に this 属性を使用して取得できないことを意味します。次の例を見てみましょう:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>无标题页</title> <script type="text/javascript"> function btnClick(btn){ alert(btn.value); } </script> </head> <body> <input type="button" onclick="btnClick(this)" value="单击" /> </body> </html>
このとき得られた答えは「クリック」ですが、なぜこのタイミングでできるのでしょうか?コードからわかるように、onclick イベントが関数 btnClick() を呼び出すと、これがパラメーターとして関数に渡されます。
上記を要約すると、関数を呼び出すときに this 属性を直接使用して取得することはできませんが、これはパラメータとして渡す必要があります。
window.event.srcElement:
以下の例を見てください:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>无标题页</title> <script type="text/javascript"> function btnClick(){ alert(window.event.srcElement.value); } </script> </head> <body> <input type="button" onclick="btnClick()" value="单击" /> </body> </html>
この時点で得られた答えは「click」で、関数呼び出し時に window.event.srcElement プロパティを使用して取得できることを示しています。
window.event.srcElement は直接使用できるのに、これは直接使用できないのはなぜですか?純粋に文字通りの意味では、これは「現在」を意味します。関数を呼び出すときに、特定のコントロールを関数内で直接使用することはできません。 2 番目のコードでは、これをパラメーターとして渡すため、正しい答えが得られます。
実際this と window.event.srcElement の使用の違いは次のとおりです。この属性を直接使用したい場合、この時点では関数を呼び出すことはできませんが、応答関数でなければなりません。一方、window.event.srcElement にはそのような制限はありません。
以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。

同事因为this指向的问题卡住的bug,vue2的this指向问题,使用了箭头函数,导致拿不到对应的props。当我给他介绍的时候他竟然不知道,随后也刻意的看了一下前端交流群,至今最起码还有70%以上的前端程序员搞不明白,今天给大家分享一下this指向,如果啥都没学会,请给我一个大嘴巴子。

本篇文章带大家解读vue源码,来介绍一下Vue2中为什么可以使用 this 访问各种选项中的属性,希望对大家有所帮助!

一、this关键字1.this的类型:哪个对象调用就是哪个对象的引用类型二、用法总结1.this.data;//访问属性2.this.func();//访问方法3.this();//调用本类中其他构造方法三、解释用法1.this.data这种是在成员方法中使用让我们来看看不加this会出现什么样的状况classMyDate{publicintyear;publicintmonth;publicintday;publicvoidsetDate(intyear,intmonth,intday){ye

什么是this?下面本篇文章给大家介绍一下JavaScript中的this,并聊聊this在函数不同调用方式下的区别,希望对大家有所帮助!

jQuery中this关键字的灵活运用在jQuery中,this关键字是一个非常重要且灵活的概念,它用来引用当前正在操作的DOM元素。通过合理的运用this关键字,我们可以方便地操作页面中的元素,实现各种交互效果和功能。本文将结合具体的代码示例,介绍this关键字在jQuery中的灵活运用。简单的this示例首先,我们来看一个简单的this示例。假设我们有一

JavaScript如何改变this指向?下面本篇文章给大家介绍一下JS改变this指向的三种方法,希望对大家有所帮助!

jQuery是一种流行的JavaScript库,广泛用于网页开发中的DOM操作和事件处理。其中一个重要的概念就是this关键字的使用。在jQuery中,this代表当前操作的DOM元素,但在不同的上下文中,this的指向可能会有所不同。本文将通过具体的代码示例来解析jQuery中this的使用技巧。首先,让我们来看一个简单的示例:

1.this引用1.1为什么要有this引用先来写一个日期类的例子:publicclassclassCode{publicintyear;publicintmonth;publicintday;publicvoidsetDay(inty,intm,intd){year=y;month=m;day=d;}publicvoidprintDate(){System.out.println(year+"-"+month+"-"+day);}publicstatic


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ホットトピック



