0

私が発見しようとしているのは、内部の関数とイベントリスナーが実行されたときに値を設定する方法です。それが可能であれば、その値を使用して他の潜在的なアクションを制御できます。これについての正確な資料を見つけられなかったので、私は実験してきました。以下のコードは、Chrome JSコンソールでアラームを発生させません。また、マウスがMoscowNights Divを離れると、aler(77)を実行しますが、クラップトラップコードブロック全体のバックエンドには値がありません。

function IsolateThaBUG() {
  var MoscowNights = document.getElementById("MoscowNights");

  MoscowNights.addEventListener("mouseout", function(evt) {
    var MaloMaloJavaScript = 77;
    alert(MaloMaloJavaScript);
    return MaloMaloJavaScript;
  }, false);

  var Convoluted = MoscowNights;
  return Convoluted;
}

var GotAnythingYET = IsolateThaBUG();
alert('Got This NONSENSE Instead : ' + GotAnythingYET);

そうですね...この次のブロックも値を放棄しません...またはそう思われるでしょう。アクセス可能だった場合は、divに表示されるはずですが、未定義と表示されるため、一度にこれを行う方法はないかもしれません。

    function IsolateThaBUG(){
       var MoscowNights = document.getElementById('MoscowNights');
        var MaloMaloJavaScript; // temp undefnd
        MoscowNights.addEventListener("mouseout", function (evt) {
            var MaloMaloJavaScript=77;   <<<<<<<<<<<<<<<<<<<<<<<    THAT,
            }, false);
        return MaloMaloJavaScript;   >>>>>>>>>>>>    is just NOT getting OUTSIDE!!
    }
     var GotAnythingYET = IsolateThaBUG();
     function WritetestValue() {
        var artfulArtificial = document.getElementById("whattheSAMHILLsigoinon");
        var TitleWrite = artfulArtificial.appendChild(document.createTextNode(testValue));
        return TitleWrite;
    }
    WritetestValue();

私が受け入れた答えは、私がそれを研究し、それをインストールし、それをテストしたときに私が発見したように仕事をします。

4

1 に答える 1

0

あなたが書いた関数は、要素であるIsolateThaBugの値を返しています。MoscowNights

の値を取得したいと思いますMaloMaloJavascript。これを実現するには、変更するコールバックまたはその他の変数を渡す必要があります。

ここにいくつかの例があります。

function testMouseout() {
  var element = document.getElementById('MoscowNights'); 
  var testValue;  // undefined currently.
  element.addEventListener('mouseout', function(e) {
    testValue = 77;
  }, false);
  return testValue;
}

var mouseoutTest = testMouseout(); 
console.log(mouseoutTest); // undefined
// perform the mouseout action. If you did, the value will be 77.
window.setTimeout(function(){
  console.log(mouseoutTest) // 77
}, 5000)

マウスアウトが発生するまでアラートが発生するまで待機する場合は、コールバック関数を渡すことができます。これは、JavaScriptのファーストクラス関数を利用します。

function testMouseout(callback) {
  var element = document.getElementById('MoscowNights'); 
  var testValue;  // undefined currently.
  element.addEventListener('mouseout', function(e) {
    testValue = 77;
    callback(testValue);
  }, false);
  return testValue;
}

// we pass in a function that will 
// be executed when the event fires.
testMouseout(function(value) {
  alert(value); // 77
});
于 2013-02-10T02:27:23.650 に答える