为什么我不能将Javascript对象分配给DOM元素?

时间:2014-12-04 18:37:07

标签: javascript html object dom

这是我的代码:

<input id="input_with_id" type="text" value="hello" disabled>
<script type="text/javascript">
     input_with_id = {type:"checkbox", value:"bye", disabled:false}
</script>

IE 8向我显示了此错误消息:&#34;此对象不管理此属性或此方法&#34;。但是,如果我使用此代码,它的工作方式应该如下:

<script type="text/javascript">
     var my_var = new Object();
     my_var = {a:"x", b:"y", c:"z"}
</script>

这两个代码之间的唯一区别在于,我尝试将DOM元素重新分配给与DOM元素具有相同结构的Javascript对象,而在另一个代码中我重新分配Javascript对象到另一个Javascript对象。为什么你不能像这里的Javascript对象那样对待DOM元素,尽管通常它们的工作方式类似?

2 个答案:

答案 0 :(得分:3)

var my_var = new Object(); my_var = {...};也不完全“正常”。您正在创建一个完全对象并丢弃您使用new Object创建的第一个

IE8只是不喜欢你“扔掉”一个DOM元素。

简而言之,您收到错误消息是因为您做错了。

答案 1 :(得分:1)

尝试使用&#34; Auto Global&#34; (不推荐使用其ID或名称引用元素)。 (处理命名冲突是一个痛点)

此外,IE8(及以下)特别不允许您动态更改typename(IE7-)属性(它们被视为只读)

在您的情况下,如果您想操纵该字段,只需使用常规JavaScript(或您最喜欢的JS库)

e.g。

<script>
  var myElem = document.getElementbyId('input_with_id');
  myElem.type = 'checkbox';
  myElem.value = 'bye';
  myElem.disabled = false;
</script>

(请记住,由于type属性为只读 - ,它仍然无法在IE8中工作(它在IE9中修复(在标准模式下运行时))

相关问题