0

私はこのイベントハンドラを持っています:

//Event Handler
var bindEvt = (function () {
    "use strict";
    if (document.addEventListener) {
        return function (element, event, handler) {
            element.addEventListener(event, handler, false);
        };
    }
    return function (element, event, handler) {
        element.attachEvent('on' + event, handler);
    };
}());

そして、メニュー要素を循環し、クリックされたかどうかを検出するこのコード。

// Ajax article loading
function test(){var menuitem = document.getElementsByTagName('nav')[0].childNodes;
    for(var i= 0; i < menuitem.length; i++){
        bindEvt(menuitem[i], "click", loadajax);
    }
};

function loadajax () {
    alert('yo')
}
bindEvt(window, "load", test);

今私の問題は、クリックされたアイテムを知りたいのですが、からにloadajax()引数を渡す方法がわからないようです。test()loadajax()

どうすればいいですか?私はいくつかのことを試しましたが、常にスクリプトが壊れているようです:(

ご意見ありがとうございます!

4

2 に答える 2

1

どのオブジェクトがクリックされたかを知りたいだけの場合はthis、イベント ハンドラーで の値を使用できます。これを loadajax に渡す必要はありません。イベント システムはthis、イベントを発生させたオブジェクトに設定されます。も参照できますevent.target

function loadajax (event) {
    event = event || window.event;   // deal with old IE

    // `this` points to the object that caused the event

    alert('yo');
}
于 2012-08-14T14:08:45.597 に答える
0
function loadajax (X) {
console.log(X);
alert('yo')
}

X は Event 型で、多くの詳細情報を持っている必要があります。

interface Event {

  // PhaseType
  const unsigned short      CAPTURING_PHASE                = 1;
  const unsigned short      AT_TARGET                      = 2;
  const unsigned short      BUBBLING_PHASE                 = 3;

  readonly attribute DOMString        type;
  readonly attribute EventTarget      target;
  readonly attribute EventTarget      currentTarget;
  readonly attribute unsigned short   eventPhase;
  readonly attribute boolean          bubbles;
  readonly attribute boolean          cancelable;
  readonly attribute DOMTimeStamp     timeStamp;
  void               stopPropagation();
  void               preventDefault();
  void               initEvent(in DOMString eventTypeArg, 
                               in boolean canBubbleArg, 
                               in boolean cancelableArg);
};

http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-Event

于 2012-08-14T14:14:02.123 に答える