3

通常、ボタンがクリックされたときにJavascript関数を呼び出します。

<button onclick=function1();>Post message</button>

または、特定の時間にJavascript関数を呼び出す場合もあります。

window.onload = myFunction();
          function myFunction()
           {
                 setInterval(function1,t);  
           }

ここfunction1()で、Javascript関数はあります。スクリプト内で変数の値が変更された場合にのみ、この関数を呼び出したいと思います。

例:変数abcがあるとしましょう。以下の関数を使用してページ上で何かを選択すると、その変数の値が変わります。

var abc = function getSelectionHTML() {
      var userSelection;
      if (window.getSelection) {
        // W3C Ranges
        userSelection = window.getSelection ();
        // Get the range:
        if (userSelection.getRangeAt) {
          if (userSelection.rangeCount > 0)
        var range = userSelection.getRangeAt(0);
          else
        return '';
        } else {
          var range = document.createRange ();
          range.setStart (userSelection.anchorNode, userSelection.anchorOffset);
          range.setEnd (userSelection.focusNode, userSelection.focusOffset);
        }
        // And the HTML:
        var clonedSelection = range.cloneContents ();
        var div = document.createElement ('div');

        div.appendChild (clonedSelection);
        return div.innerHTML;
      } else if (document.selection) {
        // Explorer selection, return the HTML
        try {
          userSelection = document.selection.createRange ();
          return userSelection.htmlText;
        } catch (err) {
          return '';
        }
      } else {
        return '';
      }
    }

alert(abc)変数の値が変更された場合にのみどうすればよいですか?助けてください!

4

2 に答える 2

2

「最新の」ブラウザをターゲットにしている場合は、Object.definePropertyを使用してセッター関数、つまり、対応するフィールドの値を設定するたびに呼び出される関数を定義できます。

JS の「グローバル」変数は単に window オブジェクトのメンバーであるため、jou は次のようなことができるはずです。

Object.defineProperty(window, "abc", { set: function(v) { 
  /* this is run every time abc is assigned a value: 
     the value being assigned can be found in v */
} } );
于 2012-11-17T06:40:14.797 に答える
2

まず、カスタム セッターとゲッターabcを使用して変数を定義する必要があります。

var value_of_abc;
 Object.defineProperty(window, 'abc', {
    get: function() {
      console.log('get!');
      return value_of_abc;
    },
    set: function(value) {
      console.log('set!');
      value_of_abc = value;
    }
  });

その後、 variable を呼び出したり変更したりするたびabcに、ここで何かが発生します。

window.abc //get!
window.abc = 1 //set!
于 2014-10-24T02:50:37.527 に答える