Что не так с этим кодом JavaScript? - PullRequest
0 голосов
/ 26 марта 2011
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 ]

2 голосов
/ 26 марта 2011

2 проблемы: не все браузеры поддерживают addEventListener, а параметр e в

toggleVisibility: function(e) {...

не является элементом.Это объект события, поэтому e.srcElement должен справиться - опять же - с большинством браузеров.Подробнее: https://developer.mozilla.org/en/DOM/element.addEventListener

Совет. Никогда не прикасайтесь к Object.prototype!

1 голос
/ 26 марта 2011

Я не знаю, было бы правильно создать ваш прототип таким образом.То, как оно написано, имеет намерение заменить прототип вместо его расширения.

Я бы написал

Object.prototype.toggleVisibility = function(e) {
        e.style.display = (e.style.display == "none") ? "block" : "none";
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...