JavaScript:'textarea.value'在IE中不起作用?

时间:2010-04-13 20:41:29

标签: javascript internet-explorer innerhtml

几个小时前,我被指示how to style a specific textarea with JS。下面这段代码(再次感谢Mario Menger)就像Firefox中的魅力一样,但遗憾的是Internet Explorer中没有任何东西发生(到目前为止只测试了7个)。

var foo = document.getElementById('HCB_textarea');
var defaultText = 'Your message here';
foo.value = defaultText;
foo.style.color = '#888';
foo.onfocus = function(){
    foo.style.color = '#000';
    if ( foo.value == defaultText ) {
        foo.value = '';
    }
};
foo.onblur = function(){
    foo.style.color = '#888';
    if ( foo.value == '' ) {
        foo.value = defaultText;
    }

};

我已经尝试用'innerHTML'替换'value'(仅适用于IE),但没有效果。有什么建议? TIA

3 个答案:

答案 0 :(得分:1)

如果您的脚本位于页面顶部,则可能是在页面完全加载之前它正在运行。因此,您尝试引用的元素尚不存在。

答案 1 :(得分:1)

不幸的是,Internet Explorer,javascript和标记不适合一个句子。为它编写脚本总是很痛苦。

无论如何要调试你可能会尝试通过放入alert("onblur works!");行来调用事件。也许警告你正在测试或改变的一些变量的值。

答案 2 :(得分:0)

对我来说很好。完全不工作的测试用例?

如果您从本地文件系统运行该页面,请确保允许JavaScript通过信息栏运行,启用“允许活动内容在我的计算机上的文件中运行”,或添加“Web标记”。

您可能还希望仅在empty / defaultText情况下使其变为灰色。

编辑:好的,这是一个严重恶劣的页面,eBay正在吐痰,充满了疯狂的破碎内容和shonky脚本。它有一个ErrorHandlerManager的东西可以阻止您的问题报告,以及页面上的其他一些脚本错误。好的。

奇怪的是,eBay似乎将其作为复杂的嵌套iframe提供给IE,其中Firefox将其全部放在一个文档上。加载'htmlcommentbox'脚本的这种或奇怪的方式会导致跟随它的水印脚本在注释框附加到页面之前运行,导致getElementById尝试失败。

我在你的脚本周围放了一个window.onload= function() { ... }包装器,这使它运行起来。我不知道它是否可能会干扰页面上的任何其他可能使用window.onload事件(有太多令人不快的破解脚本要经过检查),但如果是这样的话总是addEventListener / attachEvent