这是我的代码:
<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元素,尽管通常它们的工作方式类似?
答案 0 :(得分:3)
var my_var = new Object(); my_var = {...};
也不完全“正常”。您正在创建一个完全新对象并丢弃您使用new Object
创建的第一个
IE8只是不喜欢你“扔掉”一个DOM元素。
简而言之,您收到错误消息是因为您做错了。
答案 1 :(得分:1)
尝试使用&#34; Auto Global&#34; (不推荐使用其ID或名称引用元素)。 (处理命名冲突是一个痛点)
此外,IE8(及以下)特别不允许您动态更改type
或name
(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中修复(在标准模式下运行时)))