IE处理javascript对象值的方式有何不同?

时间:2012-01-05 21:29:08

标签: javascript internet-explorer

我有一个脚本如下

    document.getElementById('lan').innerHTML=lan;
    document.getElementById('city').innerHTML=city;
    document.getElementById('text1').value=city+'|'+lan;

变量lan和city包含文本,例如'kalmar'。

我想要做的是获取这两个变量的内容并将它们组合起来并将组合字符串设置为表单字段的值,以便能够使用表单的常规提交函数将其保存到数据库

在Chrome和FF中,它可以完美运行,但不适用于IE(惊喜)。 如果我alert(document.getElementById('text1').value)看看它持有什么值IE浏览器只打印

[object]

有关发生了什么/我能做些什么才能使其兼容的任何线索?

这是一份大文件,但我在这里剪切并粘贴了必需品:

用于接收最终合并值的HTML元素

<input type='hidden' name='text1' id='text1' value=''>

HTML元素(链接),用于为上述HTML元素赋值:

<div id="searchResult"><a href="javascript:populateFields('Kalmar','Kalmar');">Kalmar i Kalmar</a><br></div>

function populateFields(lan,city)
{
    document.getElementById('lan').innerHTML=lan;
    document.getElementById('city').innerHTML=city;
    document.getElementById('text1').setAttribute('value',city+'|'+lan)
    document.getElementById('save_button').style.zIndex='auto';
alert('LAN: '+document.getElementById('lan').innerHTML);    
alert('CITY: '+document.getElementById('city').innerHTML);  
alert('TEXT1: '+document.getElementById('text1').value);    
}

另外 - alert()检查现在打印正确的值(即Kalmar | Kalmar),但表单仍然没有保存我将text1字段设置为的值!

2 个答案:

答案 0 :(得分:0)

在IE中,您可以使用setAttribute('value',city+'|'+lan)

希望它符合您的需求。

答案 1 :(得分:0)

所以我发现这里有很多问题。

首先,函数populate_fields()具有与文档中的某些html元素相同的局部变量。 IE不喜欢这样,因此当我尝试读取存储在变量中的值时,它打印了[object](因为已经存在一个具有相同名称的html元素/ DOM对象,我想我的函数变量从未声明过)。 / p>

一旦解决了这个问题,我也意识到表单并没有保存我的价值,尽管表单项似乎已经收到了正确的值(我使用alert检查)。 事实证明我有一个嵌套的形式,即。

<form>

<form>
</form>

<input last inputfield of first form>
</form>

这使IE完全无视最后一个表单字段...由于某些原因,其他浏览器都没有问题......

感谢关注的人!