javascript对象:变量全局无法在不同函数中读取
我有这个剧本javascript对象:变量全局无法在不同函数中读取,javascript,variables,object,styles,undefined,Javascript,Variables,Object,Styles,Undefined,我有这个剧本 var b={ c:{ a:document.querySelector(“.a”), init:function(){ this.a.style.backgroundColor=“红色”; 此.a.添加了EventListener(“单击”,b.c.更改); }, 更改:函数(){ this.a.style.width=“100px”; } } } b、 c.init() .a{ 宽度:10px; 高度:10px; 背景:黑色; 光标:指针; } 在更改事件处理程序中,此引用d
var b={
c:{
a:document.querySelector(“.a”),
init:function(){
this.a.style.backgroundColor=“红色”;
此.a.添加了EventListener(“单击”,b.c.更改);
},
更改:函数(){
this.a.style.width=“100px”;
}
}
}
b、 c.init()代码>
.a{
宽度:10px;
高度:10px;
背景:黑色;
光标:指针;
}
在更改事件处理程序中,此
引用dom元素。所以只需将this.a.style….
更改为this.style….
var b={
c:{
a:document.querySelector(“.a”),
init:function(){
此.a.style.backgroundColor=“红色”;
此.a.添加了EventListener(“单击”,b.c.更改);
},
更改:函数(){
this.style.width=“100px”;
}
}
}
b、 c.init()代码>
.a{
宽度:10px;
高度:10px;
背景:黑色;
光标:指针;
}
试一下,这样就行了
var b={
c:{
a:document.getElementById(“a”),
init:function(){
此.a.style.backgroundColor=“红色”;
此.a.添加了EventListener(“单击”,b.c.更改);
},
更改:函数(){
this.style.width=“100px”;
}
}
}
b、 c.init()代码>
#a{
宽度:10px;
高度:10px;
背景:黑色;
光标:指针;
}
首先,在变更事件中,这个
指向的是DOM
元素,而不是对象。因此,您可以使用this
直接更新样式
第二,在a
内部,此
将指向c
,因此,您可以直接执行此更改,而不是b.c.change
var b={
c:{
a:document.queryselectoral(“.a”),
init:function(){
for(var i=0;i
.a{
宽度:10px;
高度:10px;
背景:黑色;
光标:指针;
保证金:5px;
填充物:5px;
}
1
2.
3.
4.
5
我不明白你的问题,抱歉:D Thaaaaankankkksss…….这里的self
是一个指向窗口的窗口
,唯一起作用的原因是因为你使用了id
作为a
@Rajesh这是起作用的唯一原因,是因为他创建了一个全局变量调用a
@Keith全局属性a
是由浏览器->ups-sorry@BEJGAM SHIVA-PRASAD创建的,我太兴奋了,自己不工作,我对更多的dome-in-change函数有问题,但是如果有多个元素,则选择class将产生问题。。所以最好使用“id”。@BEJGAMSHIVAPRASAD你是什么意思?@BEJGAMSHIVAPRASAD在这个特殊设置中a
总是只包含一个元素,因为document.querySelector()
只返回第一个匹配的元素。谢谢@Pranav CBalan@FerryAlfanso:很高兴帮助hi@Rajesh,如果“change”中有更多的dom元素如何函数?@FerryAlfanso您必须循环它们,并为每个元素分配处理程序。请检查更新的answerHi@Rajesh,我添加了新的div.b,并强制在更改功能中扩展。我说得对吗?或者有什么建议?thanks@FerryAlfanso您可以更新选择器,它应该可以工作