0
document.getElementById("but").onclick = function(e) {
showDropDown(this, e);
};

function showDropDown(element, e) {
element.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 == element) {
        hideDropDown();
        return;
    }
    do {
        if (ele == document.getElementById("window")) return;
    } while (ele = ele.parentNode);
    hideDropDown(element);
};
}

function hideDropDown(element) {
document.onclick = function() {};
document.getElementById("window").style.display = "none";
element.onclick = function(e) {
    showDropDown(this, e);
};
}​


   <input id="but" type="button" value="pressMe" />
   <div id="window" style="display:none">popup</div>​

错误:https ://www.dropbox.com/s/uzeiq6043rvueqf/Capture.PNG https://www.dropbox.com/s/w3rct18cumwva7m/bar3.png

4

3 回答 3

1

您有错误,因为您的文档未加载。
将您的代码放入window.onload

window.onload=function(){
  //code
}

或者如果您使用的是 jquery:

$(document).ready(function(){
  //code
});
于 2012-08-26T06:01:03.743 回答
0
document.getElementById("but").onclick = function(e) {
    showDropDown(this, e);
};

function showDropDown(element, e) {
    element.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 == element) {
            hideDropDown();
            return;
        }
        do {
            if (ele == document.getElementById("window")) return;
        } while ((ele = ele.parentNode) !== null);
        hideDropDown(element);
    };
}

function hideDropDown(element){
    document.onclick = function() {};
    document.getElementById("window").style.display = "none";
    element.onclick = function(e) {
        showDropDown(this, e);
    };
}
于 2012-08-26T06:00:30.290 回答
0

您所做的是复制或编写此代码的位置,其中很可能存在错误。众所周知, JSFiddle存在此类问题。您需要做的是在一个简单的编辑器(例如记事本或 TextEdit)中键入该部分代码(错误上方 1 行,错误下方 1 行),然后将其复制并替换您当前的代码。我知道它的这个错误,因为Unexoected token ILLEGAL它的一部分意味着放置在那里的隐藏字符显然不符合 JavaScript,因此它根本不是语法错误。

为我工作。

于 2012-08-26T06:07:40.663 回答