JavaScript - プロトタイプについて質問がありますか?
PHP中文网
PHP中文网 2017-05-19 10:24:13
0
2
545

プロトタイプ チェーンを使用して、州と市区町村をリンクするメソッドを作成します。プロトタイプ チェーンを使用して拡張できるように、初期関数に変数を入れます。初期化中は問題なかったのですが、onchange を使用して州または都市を選択すると問題が発生しました。selectProvince と selectCity の属性オプションが見つかりませんでした。調べてみると、selectProvince と selectCity を使用したときにまったく検出されませんでした。はい、明らかに AddressInit で初期化しましたが、検出されませんでした。解決策を教えていただけますか?
コード:
//これは短い json です

リーリー

//これはhtml

です リーリー

//これは js

です リーリー
PHP中文网
PHP中文网

认证0级讲师

全員に返信(2)
左手右手慢动作

コールバック関数には正しいこの環境が必要です。

この行を入れてください

リーリー

に変更されました リーリー
いいねを押す +0
滿天的星座

上で述べたように、このポインタには問題があります:

this.selectProvince.onchange = this.changeProvince;

select の変更イベントのハンドラー関数が this.changeProvince であり、それへの参照であるということですね。

実際には次のようになります:

リーリー

問題が見えますか?イベントハンドラー関数の this指的是dom对象,即document.getElementById(selectProvince) には、確かに必要なものがありません。

は上記のように this.selectCity.onchange = this.changeCity.bind(this)

に置き換えることができます

this.selectCity.onchange = this.changeCity; 这样写 只是表示selectCity.onchange 也是 this.changeCity这个函数,在js中,this的指向是实际运行时才决定,在onchange事件触发时,this.changeCity 函数内的this为dom元素,所以就出错了。bind方法可以替换函数内的this 新しい関数を生成するポイント。

this.changeCity.bind(this)这句在运行时,已经将this.changeCity函数内的this替换为了当前的this (これはインスタンス オブジェクトを指します) で、必要な効果を実現します。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート