Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript对象:变量全局无法在不同函数中读取_Javascript_Variables_Object_Styles_Undefined - Fatal编程技术网

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您可以更新选择器,它应该可以工作