Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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 检测DOM元素是否确实具有IE8中定义的属性_Javascript_Jquery_Html_Dom_Internet Explorer 8 - Fatal编程技术网

Javascript 检测DOM元素是否确实具有IE8中定义的属性

Javascript 检测DOM元素是否确实具有IE8中定义的属性,javascript,jquery,html,dom,internet-explorer-8,Javascript,Jquery,Html,Dom,Internet Explorer 8,以下示例在IE8中进行了测试 我有一个非常简单的列表,如下所示 <select> <option>opt 1</option> <option>opt 2</option> </select> 选择1 选择2 假设此引用第一个选项的DOM元素。当我执行this.selected时,它返回true,即使它不是。我想要的是一个函数,它仅在DOM具有用户/编码者明确定义的属性selected或selected=“

以下示例在IE8中进行了测试

我有一个非常简单的列表,如下所示

<select>
   <option>opt 1</option>
   <option>opt 2</option>
</select>

选择1
选择2
假设
引用第一个选项的DOM元素。当我执行
this.selected时,它返回
true
,即使它不是。我想要的是一个函数,它仅在DOM具有用户/编码者明确定义的属性
selected
selected=“selected”
时才返回
true

我不能使用hasAttribute,因为它没有在ie8中定义


请提供帮助。

您应该使用jQuery,然后:

var value = $('select').val();

这将返回所选选项的属性值,如果没有值,则返回标签(选项标记内的文本)。

您应该使用jQuery,然后:

var value = $('select').val();

这将返回所选选项的属性值,如果没有值,则返回标签(选项标记内的文本)。

您应该使用jQuery,然后:

var value = $('select').val();

这将返回所选选项的属性值,如果没有值,则返回标签(选项标记内的文本)。

您应该使用jQuery,然后:

var value = $('select').val();

这将返回所选选项的属性值,如果没有值,则返回标签(选项标记内的文本)。

如果当前在选择框中选择了选项,则选项元素上的
selected
属性为
true
。在标记中,您可以通过指定
selected
属性来选择选项,但在选择框中选择选项还有其他方式(用户可以选择,浏览器默认情况下可以选择第一个选项,依此类推)。请注意关于默认值的部分。在下拉选择框中,如果您没有将
selected
属性放在任何浏览器上,几乎所有(all?)浏览器都会自动选择第一个选项

因此,
this.selected
可以可靠地告诉您是否选择了元素

不幸的是,IE8的
getAttribute
将为
“selected”
属性返回
“selected”
,即使标记没有它,如果元素被选中。大多数其他浏览器不会这样做,他们理解属性和属性之间的区别,但遗憾的是IE8没有

幸运的是,jQuery的
attr
函数有一个解决方法(因为您已经标记了问题
jQuery
)<如果元素没有该属性,则code>attr
将返回
undefined
(而不是
null
),即使在IE8上也是如此。所以如果你真的想知道,你可以通过这种方式找到答案。但很少有人关心这一点。(注意:解决方法很简单,但很明显;只有在使用IE8查看这些链接时,这些链接才真正有意义。)


但是,在jQuery中读取选择框值的常规方法是在选择框元素上使用
.val

如果当前在选择框中选择了选项,则选项元素上的
selected
属性为
true
。在标记中,您可以通过指定
selected
属性来选择选项,但在选择框中选择选项还有其他方式(用户可以选择,浏览器默认情况下可以选择第一个选项,依此类推)。请注意关于默认值的部分。在下拉选择框中,如果您没有将
selected
属性放在任何浏览器上,几乎所有(all?)浏览器都会自动选择第一个选项

因此,
this.selected
可以可靠地告诉您是否选择了元素

不幸的是,IE8的
getAttribute
将为
“selected”
属性返回
“selected”
,即使标记没有它,如果元素被选中。大多数其他浏览器不会这样做,他们理解属性和属性之间的区别,但遗憾的是IE8没有

幸运的是,jQuery的
attr
函数有一个解决方法(因为您已经标记了问题
jQuery
)<如果元素没有该属性,则code>attr将返回
undefined
(而不是
null
),即使在IE8上也是如此。所以如果你真的想知道,你可以通过这种方式找到答案。但很少有人关心这一点。(注意:解决方法很简单,但很明显;只有在使用IE8查看这些链接时,这些链接才真正有意义。)


但是,在jQuery中读取选择框值的常规方法是在选择框元素上使用
.val

如果当前在选择框中选择了选项,则选项元素上的
selected
属性为
true
。在标记中,您可以通过指定
selected
属性来选择选项,但在选择框中选择选项还有其他方式(用户可以选择,浏览器默认情况下可以选择第一个选项,依此类推)。请注意关于默认值的部分。在下拉选择框中,如果您没有将
selected
属性放在任何浏览器上,几乎所有(all?)浏览器都会自动选择第一个选项

因此,
this.selected
可以可靠地告诉您是否选择了元素

不幸的是,IE8的
getAttribute
将为
“selected”
属性返回
“selected”
,即使标记没有它,如果元素被选中。大多数其他浏览器不会这样做,他们理解属性和属性之间的区别,但遗憾的是IE8没有

幸运的是,jQuery的
attr
函数有一个解决方法(因为您已经标记了问题
jQuery
)<如果元素没有该属性,则code>attr将返回
undefined
(而不是
null
),即使在IE8上也是如此。所以如果你真的想知道,你可以通过这种方式找到答案。但它是