Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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 样式属性上的JS语法_Javascript - Fatal编程技术网

Javascript 样式属性上的JS语法

Javascript 样式属性上的JS语法,javascript,Javascript,请看一下我的小脚本,它检查是否已经在元素上定义了样式 HTML: <div id="la" style="width: 100px;height: 100px;background: #eee;"> </div> 我的问题是关于if条件和其中的语法。通常,当我们想要获得元素样式时,我们使用以下语法: elementname.style.propertyname 但是,为什么在检查元素是否具有属性时,我们要使用以下语法: elementname.style['padd

请看一下我的小脚本,它检查是否已经在元素上定义了样式

HTML:

<div id="la" style="width: 100px;height: 100px;background: #eee;">

</div>
我的问题是关于if条件和其中的语法。通常,当我们想要获得元素样式时,我们使用以下语法:

elementname.style.propertyname
但是,为什么在检查元素是否具有属性时,我们要使用以下语法:

elementname.style['padding']
?

为什么这种语法会引发错误:

elementname.style.propertyname
我的脚本工作得很好,我的问题是关于JS语法的

编辑::为了浓缩我的困难,让我重新表述我的问题: 如果在我的if条件下,我使用以下语法:


\u str.style.[name]
(注意样式后面的点),而不是我当前的
\u str.style.[name]
,为什么会引发错误

因为您想检查
name
变量的值是否作为样式存在于元素中。如果您编写
\u str.style.name
,您将检查名为
name
的样式的定义。方括号允许您动态检查属性,或使用连字符检查属性,例如
\u str.style['my-dash-property']

顺便说一下,考虑到style属性不存在,因为它等于一个空白字符串,这很奇怪


语法
obj.[name]
不起作用,因为点运算符用于通过固定键访问属性,因此您可以查找名为
[name]
的属性,这是不允许的,因为您希望检查
name
变量的值是否作为样式存在于元素中。如果您编写
\u str.style.name
,您将检查名为
name
的样式的定义。方括号允许您动态检查属性,或使用连字符检查属性,例如
\u str.style['my-dash-property']

顺便说一下,考虑到style属性不存在,因为它等于一个空白字符串,这很奇怪


语法
obj.[name]
不起作用,因为点运算符用于通过固定键访问属性,因此您需要查找名为
[name]
的属性,这是不允许的

好的,我看到了您的困惑

在阅读其他内容之前,请先阅读本文

在JavaScript中,可以通过两种方式访问任何变量的属性

1) obj.propertyName

2) obj['propertyName']

现在,来回答你的问题:

 _str.style.[name] // Error is thrown because it is syntactically wrong to be accessing the object properties like this.
只需
console.log
您的
\u str.style
并观察它是一个对象

所以

由于您试图在for循环中动态访问对象属性,因此您可以这样编写:

_str.style[name] // Here name is a variable whose value is dynamically set during each iteration of the loop.

好吧,我明白你的困惑了

在阅读其他内容之前,请先阅读本文

在JavaScript中,可以通过两种方式访问任何变量的属性

1) obj.propertyName

2) obj['propertyName']

现在,来回答你的问题:

 _str.style.[name] // Error is thrown because it is syntactically wrong to be accessing the object properties like this.
只需
console.log
您的
\u str.style
并观察它是一个对象

所以

由于您试图在for循环中动态访问对象属性,因此您可以这样编写:

_str.style[name] // Here name is a variable whose value is dynamically set during each iteration of the loop.

您在哪里执行此操作?-->elementname.style['padding']在代码中。@SandepNayak,对照if条件检查我在小提琴中的注释。要了解更多信息,请查看文档:您在哪里执行此操作?-->elementname.style['padding']在您的代码中。@SandepNayak,对照if条件检查小提琴中的注释。要了解更多信息,请查看文档:检查小提琴和我对if条件的评论,这基本上是我的问题。谢谢你的回答。我明白了,所以你想知道为什么
obj.[name]
不起作用。这是因为点运算符用于通过固定键访问属性,因此您可以查找名为
[name]
的属性,而这是不允许的。动态查找属性也是不允许的,而且在使用[]括号时,我们必须消除点?这是我的答案。请根据if条件检查fiddle和我的注释,这基本上是我的问题。谢谢你的回答。我明白了,所以你想知道为什么
obj.[name]
不起作用。这是因为点运算符用于通过固定键访问属性,因此您可以查找名为
[name]
的属性,而该属性不允许动态查找属性,而且在使用[]括号时,我们必须消除点?这是我的答案。感谢您的答案,伙计,我将+1你,但我会接受迈克尔的回答,因为他问1:)当然,我的回答是他的延伸。我添加了一些参考资料来澄清问题。顺便说一句,我也听了迈克尔的回答。谢谢你的回答,老兄,我会告诉你的,但我会接受迈克尔的回答,因为他问了我一句:)当然,我的回答是对他的回答的延伸。我添加了一些参考资料来澄清问题。顺便说一句,我也听过迈克尔的回答。