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