这个JavaScript代码有什么问题?

时间:2011-03-26 17:00:02

标签: javascript web

var menu = {
        minibox: document.getElementById("hypt_opContainer"),
        miniboxoptions: [document.getElementById("hypt_op"),    
        document.getElementById("style_op"), document.getElementById("js_op")]
 };

Object.prototype = {
       toggleVisibility: function(e) {
           e.style.display = (e.style.display == "none") ? "block" : "none";
       }
   };

menu.miniboxoptions[0].addEventListener("click", menu.minibox.toggleVisibility);

单击此框时,它不会执行任何操作  有什么问题?

2 个答案:

答案 0 :(得分:2)

2个问题:并非所有浏览器都支持

中的addEventListener和参数e
toggleVisibility: function(e) {...

不是元素。它是一个事件对象,因此e.srcElement应该再次使用 - 大多数浏览器。更多:https://developer.mozilla.org/en/DOM/element.addEventListener

提示:永远不要碰到Object.prototype!

答案 1 :(得分:1)

我不知道以这种方式创建原型是有效的。它的编写方式清楚地意图取代原型而不是扩展原型。

我会写

Object.prototype.toggleVisibility = function(e) {
        e.style.display = (e.style.display == "none") ? "block" : "none";
    };