2

次のコードがあります

var statusList = document.createElement('ul'); //I am populating this list elsewhere
statusList.style.display = 'none';
var statusSpan = document.createElement('span');
statusSpan.onmouseover = mapControlHover(statusList);
statusSpan.onmouseout = mapControlNoHover(statusList);

function mapControlHover(element) {
  element.style.display = 'block';
}

function mapControlNoHover(element) {
  element.style.display = 'none';
}

両方のイベントがページの読み込み時に発生しています (これは行うべきではありません)。どちらも onmouseover または onmouseout で起動されていません。

回答で jquery を使用しないでください。ありがとう

4

1 に答える 1

1

はい、それはあなたがイベントを呼び出しているからです

statusSpan.onmouseover = mapControlHover(statusList);

イベント ハンドラー関数のリファレンスを渡すだけです。

statusSpan.onmouseover = mapControlHover

function mapControlHover() {
  statusList.style.display = 'block'; //access statusList directly here.
}

function.bindを使用することもできます。IE < 9 のサポートとポリフィルについては、 を参照してください。

 statusSpan.onmouseover = mapControlHover.bind(statusSpan, statusList);

アクセス

function mapControlHover(element) {
  element.style.display = 'block'; 
}
于 2013-06-07T21:02:04.840 に答える