プロトタイプ チェーンを使用して、州と市区町村をリンクするメソッドを作成します。プロトタイプ チェーンを使用して拡張できるように、初期関数に変数を入れます。初期化中は問題なかったのですが、onchange を使用して州または都市を選択すると問題が発生しました。selectProvince と selectCity の属性オプションが見つかりませんでした。調べてみると、selectProvince と selectCity を使用したときにまったく検出されませんでした。はい、明らかに AddressInit で初期化しましたが、検出されませんでした。解決策を教えていただけますか?
コード:
//これは短い json です
//これはhtml
です リーリー//これは js
です リーリー
コールバック関数には正しいこの環境が必要です。
この行を入れてください
リーリーが
に変更されました リーリー上で述べたように、このポインタには問題があります:
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
(これはインスタンス オブジェクトを指します) で、必要な効果を実現します。