document.getElementById("but").onclick = showDropDown;
function showDropDown(e) {
document.getElementById("but").onclick = function() {};
if (e.stopPropagation) e.stopPropagation(); // W3C model
else e.cancelBubble = true; // IE model
document.getElementById("window").style.display = "inline-block";
document.onclick = function(e) {
var ele = document.elementFromPoint(e.clientX, e.clientY);
if (ele == document.getElementById("but")) {
hideDropDown();
return;
}
do {
if (ele == document.getElementById("window")) return;
} while (ele = ele.parentNode);
hideDropDown();
};
}
function hideDropDown() {
document.onclick = function() {};
document.getElementById("window").style.display = "none";
document.getElementById("but").onclick = showDropDown;
}
<input id="but" type="button" value="pressMe" />
<div id="window" style="display:none">popup</div>
デモ: http://jsfiddle.net/nazym/
指定された要素の名前の代わりに変数を使用して JavaScript コードを動的にしようとしましたが、できませんでした。常にエラーを返します。いろいろな要素とリンクさせたい。
更新
JavaScript コードの要素の s を変数
に置き換えてid
、任意の要素で使用できるようにしたいのですが、実行しようとしましたが失敗しました。基本的に、要素の s の代わりに変数を使用id
し、それを何らかの方法で要素に再度リンクしたいと考えています。