2009-08-12 145 views
0

我目前正在对网页上的用户名/密码输入进行样式设计。他们正在按预期在Firefox/Safari浏览器,但Internet Explorer中引发以下错误:JavaScript不能在Internet Explorer中工作

行:7字符:2,反对要求

它发生在我焦点赋予我的投入。该功能被称为聚焦状态:

function InputFocused(InputID) 
{ 
    var InputObject = document.getElementById(InputID); 
    DefaultValue = InputObject.value; 
    InputObject.value = ""; 
    InputObject.style.color = "#000"; 
} 

这是标记:

<input type="text" class="login" id="username" value="USERNAME" onfocus="InputFocused(this.id)" onblur="InputBlurred(this.id)" /> 

我认为这是非常简单的,但我用JavaScript极少经验,所以任何见解将不胜感激。

+0

请发布您用于连接onfocus这个功能的代码。 – 2009-08-12 22:22:01

回答

3

我认为最好的办法是做这个

function InputFocused(DOM_OBJECT) 
    { 
     DefaultValue = DOM_OBJECT.value; 
     DOM_OBJECT.value = ""; 
     DOM_OBJECT.style.color = "#000"; 
    } 

当你的HTML应该是这样的:

<input type="text" class="login" "id="username" value="USERNAME" onfocus="InputFocused(this)" onblur="InputBlurred(this)" /> 

这将通过完整DOM对象,而不是刚好路过ID。

我希望这有助于!

+0

虽然它确实有助于使代码更简洁,但它不能解决我遇到的问题。谢谢你的提示,但我已经实施 – 2009-08-13 16:29:45

+0

事实上,它确实解决了IE问题,我只是忘记了在再次检查页面之前清除缓存。谢谢。有任何想法为什么通过this.id会抛出错误,但通过对象引用是没有问题的? – 2009-08-13 16:46:29

+0

我不知道为什么。我已经玩过你的代码,并且两个版本都能正常工作。 – 2009-08-13 19:47:56

1

我觉得这

<input type="text" class="login" "id="username" value="USERNAME" onfocus="InputFocused(this.id)" onblur="InputBlurred(this.id)" /> 

将需要此

<input type="text" class="login" id="username" value="USERNAME" onfocus="InputFocused('username')" onblur="InputBlurred('username')" /> 

对于给出的示例。

+0

我的印象是两者完全一样。他们不是?除了错位“ – 2009-08-13 16:11:16

+0

错位的引号可能会导致严重的错误,总是使用验证器 – Quentin 2009-08-13 16:16:16

+0

错位的引号并不在我的实际代码中,只是在我粘贴的片段中,我的问题是关于这个与'用户名'的关系。 – 2009-08-13 20:43:43

2

您可能需要添加alert的合理性检查InputID的值。您的html存在问题("id=而不是id=),但这可能只是快速复制/粘贴的结果。

另外:我注意到你传入的id属性的值,然后查找元素,而不是直接传递给元素的引用。

+0

第一点实际上只是我的粘贴错误,而现在我通过引用而不是ID,我看它是如何使事情变得更加简洁,谢谢 – 2009-08-13 16:43:53

0

您使用的是什么版本的IE?

我期望的问题是,当你指定onfocus =“InputFocused(this.id)”时,我不确定IE是否知道它当前的上下文是什么,并且我猜测它是因为DOM尚未完成构建。

通过解决方案和解释的方式,您可以acheieve你正在尝试做的是这样的:

HTML:

<input type="text" class="login" id="username" value="USERNAME"/> 

然后,在JavaScript,你可以指定和设置您的事件处理程序:

JAVASCRIPT:

 //get the element... 
    var txtUsrNm = document.getElementById('username'); 

    //specify the event handler for focus 
    txtUsrNm.onfocus = function(){ 
     this.value = ""; 
     this.style.color = "#000"; 
    } 

//specify the event handler for blur 
    txtUsrNm.onblur = function(){ 
     this.style.color = "#f00"; 
    } 

我已经离开了你DefaultVa因为我没有完全意识到你正在试图用它做什么。 我没有测试过代码,所以很抱歉,如果它不工作。你可以通过封装一个函数等来改善它,但这可能有点偏离主题。

+0

我正在使用IE7,并且现在将对象的引用传入我的JS功能,而不是只是ID,所以它不应该是一个上下文问题。 – 2009-08-13 16:44:48

相关问题