什么';这个JavaScript代码有什么问题?
当我单击框时,它没有任何作用。什么';这个JavaScript代码有什么问题?,javascript,web,Javascript,Web,当我单击框时,它没有任何作用。 怎么了?我不知道这样创建原型是否有效。它的书写方式显然是为了替换原型,而不是扩展原型 我会写 var menu = { minibox: document.getElementById("hypt_opContainer"), miniboxoptions: [document.getElementById("hypt_op"), document.getElementById("style_op"), do
怎么了?我不知道这样创建原型是否有效。它的书写方式显然是为了替换原型,而不是扩展原型 我会写
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);
我不知道这样创建原型是否有效。它的书写方式显然是为了替换原型,而不是扩展原型 我会写
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个问题:并非所有浏览器都支持中的
addEventListener
和参数e
Object.prototype.toggleVisibility = function(e) {
e.style.display = (e.style.display == "none") ? "block" : "none";
};
不是一个元素。它是一个事件对象,因此e.srceelement
应该在大多数浏览器中使用。更多:
提示:永远不要触摸物体。原型 2问题:并非所有浏览器都支持中的
addEventListener
和参数e
Object.prototype.toggleVisibility = function(e) {
e.style.display = (e.style.display == "none") ? "block" : "none";
};
不是一个元素。它是一个事件对象,因此e.srceelement
应该在大多数浏览器中使用。更多:
提示:永远不要触摸物体。原型 您是否打算在添加事件侦听器时使用
菜单.miniboxoptions[0]
或菜单.minibox
?在我看来,你想把听众放在盒子上。没有标记很难判断。您可以使用文档.getElementById
别名。这将大大减少您的代码大小。例如:function$(id){returndocument.getElementById(id);}
。。。然后:$('hypt_opContainer')
正如答案所指出的,您的代码有两个问题:1。您正在替换对象。prototype
而不是扩充它,2。您在单击处理程序中误用了事件
对象。是否打算在添加事件侦听器时使用菜单.miniboxoptions[0]
或菜单.minibox
?在我看来,你想把听众放在盒子上。没有标记很难判断。您可以使用文档.getElementById
别名。这将大大减少您的代码大小。例如:function$(id){returndocument.getElementById(id);}
。。。然后:$('hypt_opContainer')
正如答案所指出的,您的代码有两个问题:1。您正在替换对象。prototype
而不是扩充它,2。您在单击处理程序中误用了事件
对象。e.target
是正确的事件属性e.srcElement
是微软的专有财产,正在IE9中逐步淘汰。对于跨浏览器支持:var target=e.target | | e.src元素代码>@Šime yep,关于window.event,情况更糟。从来没有找到一种方法用几句话来表达Object.prototype的威力,是吗?每个对象都继承Object.prototype对象的所有属性。e.target
是正确的事件属性e.srcElement
是微软的专有财产,正在IE9中逐步淘汰。对于跨浏览器支持:var target=e.target | | e.src元素代码>@Šime yep,关于window.event,情况更糟。从来没有找到一种方法用几句话来表达Object.prototype的威力,是吗?每个对象都继承Object.prototype对象的所有属性。