検索

ホームページ  >  に質問  >  本文

JavaScript - プロトタイプについて質問がありますか?

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

リーリー

//これはhtml

です リーリー

//これは js

です リーリー
PHP中文网PHP中文网2790日前562

全員に返信(2)返信します

  • ringa_lee

    ringa_lee2017-05-19 10:26:13

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

    この行を入れてください

    リーリー

    に変更されました リーリー

    返事
    0
  • 滿天的星座

    滿天的星座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 (これはインスタンス オブジェクトを指します) で、必要な効果を実現します。

    返事
    0
  • キャンセル返事