1

これが私の問題です。onClick属性を使用してリストから特定のアイテムをクリックして選択できるWebサイトを設計しています。ページの他の場所をクリックしてアイテムの選択を解除できるようにしたいと考えています。やってみ<body onClick="deselect()">ましたが、ページのどこかをクリックすると、アイテムの選択が解除されます(最初にクリックして選択したときでも!)。

ユーザーがページのどこか別の場所をクリックしたかどうかを検出する方法はありますか?

どうもありがとう。

編集: onBlur と handleClick を試してみましたが、結果はまちまちでした。選択したい項目をクリックすると、handleClick メソッドが 2 回呼び出され、選択してすぐに選択解除されます。

4

5 に答える 5

4

これは標準のHTML入力要素ではないため、onblurはそれをカットしません。

thisonclickイベントが呼び出されたときに何を参照しているかを調べたいと思います。リスト内のアイテムを参照している場合は、リスト内のアイテムを選択できます。リスト外を参照している場合は、リスト内のすべてのアイテムの選択を解除します。

コードは次のようになります。

function handleClick(evt) {
   if (this.getAttribute('isListItem')) {
      // highlight
    } else {
      // remove highlighting
    }
    evt.preventDefault();
}

このコードの使用は、要素がリストアイテムであることを識別するためのHTMLの属性を持っているかどうかに依存します。また、イベントがサブ要素に伝播しないようにする必要があります。これが必要かどうかは100%わかりませんが、多くの場合、イベントがリストアイテムを含む要素に伝播するためです。

http://www.w3schools.com/jsref/jsref_onclick.asp

于 2009-06-24T14:52:00.017 に答える
0

onBlurを見てください

于 2009-06-24T14:49:08.790 に答える
0

http://www.w3schools.com/jsref/jsref_onblur.asp

ぼかしとは、要素からフォーカスが「失われた」ときです。

于 2009-06-24T14:49:40.583 に答える
0

擬似コード:

var bodyOnClick = function(){}; // empty, does nothing

listItems.onclick = function(){
    /* Do stuff */
    bodyOnClick = deselect;
};

body.onclick = function() {
    bodyOnClick();
};
于 2009-06-24T16:18:59.713 に答える