在Firefox中检查字符串

时间:2009-06-10 11:33:09

标签: javascript firefox browser comparison

我正在使用

var txtname=document.getElementById('<%=txtname.ClientID%>').value;    
if (txtName == "") ....

但在FF中这不起作用。这种情况永远不会成真。即使它没有价值。 在IE和Chrome中它的工作正常。

任何人都可以让我知道如何解决这个问题.....

6 个答案:

答案 0 :(得分:0)

看起来你正在使用某种与javascript混合的服务器端语言。

txtname.ClientID实际评估的内容和页面上的内容。

您很可能没有选择document.getElementById来电的实际元素。

Chrome IE 可以处理这种方式(当您尝试访问值时返回空字符串)

虽然 Firefox 可能会以另一种方式处理它(返回null,尝试从null对象获取值时返回错误,并停止处理javascript)。

要了解其工作原理,请尝试在Firefox中打开下面的文件。前两次尝试(当进行空检查时)将正确报告找到或未找到的条件。

使用后两次尝试(当没有进行空检查时),第一次(找到的元素)工作正常,但第二次失败,因为document.getElementById返回null并且firefox不知道如何继续从这个错误。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>CSS Reset</title>


</head>
<body>
<input id="value1" type="text" value="value1"/>

<script language="javascript">

alert('finding value1 with null check');
var element = document.getElementById('value1');
if ( element == null ){
    alert('not found');
}
else{
    var txtname = element.value;
    alert(txtname);
}

alert('finding value2 with null check');
var element = document.getElementById('value2');
if ( element == null ){
    alert('not found');
}
else{
    var txtname = element.value;
    alert(txtname);
}


alert('finding value1 without null check');
var txtname = document.getElementById('value1').value;
alert(txtname);

alert('finding value2 without null check');
txtname = document.getElementById('value2').value;
alert(txtname);

alert('finished');
</script>

</body>
</html>

答案 1 :(得分:0)

确保您没有2个具有相同ID(或名称!..读取如下)的元素。

  • 首先,如果您的文档中有"txtname""txtName",并且您使用getElementById('txtName'),则可能会在IE中获取错误的元素。 Check this

  • 此外,IE将元素的名称视为id。 Check this

  • 最后,请务必使用view-source检查页面的html输出,看看<%=txtname.ClientID%>返回了什么..也许它是空字符串或者你没想到的东西。

答案 2 :(得分:0)

虽然这可能无法解决问题,但您可以将比较更改为:

if (!txtName)
  ....

如果txtName为null,undefined或为空字符串,则会成功。

答案 3 :(得分:0)

您应该检查ff的错误控制台。

CTRL + Shift + J 并检查是否发生错误。

此外,FF Plug in Firebug可以帮助您调试javascript。它提供了类似ide的调试模式。

<%=...%>允许在JSP上使用javacode表达式,你确定这是一个正确的id,允许使用document.getElementById吗?

答案 4 :(得分:0)

试试此代码

if ( (typeof txtName =="undefined") || (txtName.length==0) )

答案 5 :(得分:-1)

使用===代替==。