处理不同浏览器的JavaScript问题

处理不同浏览器的JavaScript问题,javascript,asp.net,vb.net,Javascript,Asp.net,Vb.net,我遇到的问题是,我的代码在JavaScript中工作正常,但在Firefox或safari中工作不正常,我想知道为什么。我要做的是,我有一个循环,通过每个元素,并根据文本框中的变量,只是想提醒一些东西。正如我前面所说,此代码在IE中运行良好。下面是代码: 以下是文本框的示例: <asp:TextBox ID="txtMac" runat="server" req="yes" errMessage="Mac"/> for (a = 0; a < theForm.elements

我遇到的问题是,我的代码在JavaScript中工作正常,但在Firefox或safari中工作不正常,我想知道为什么。我要做的是,我有一个循环,通过每个元素,并根据文本框中的变量,只是想提醒一些东西。正如我前面所说,此代码在IE中运行良好。下面是代码:

以下是文本框的示例:

<asp:TextBox ID="txtMac" runat="server" req="yes" errMessage="Mac"/>

for (a = 0; a < theForm.elements.length; a++) {
  if (theForm.elements[a].type == "text" && theForm.elements[a].req == "yes") {
    alert("Made it here")
  }
}

对于(a=0;a
尝试使用document.getElementsByTagName,因为我相信这在所有浏览器中都受支持

var linkList = document.getElementsByTagName("a");
用于读取自定义属性。看

所以不是

(theForm.elements[a].type==“text”&&theForm.elements[a].req==“yes”)

使用


(theForm.elements[a].getAttribute('type')==“text”和&theForm.elements[a].getAttribute('req')==“yes”)

您应该使用
var theForm=getElementById(“theForm”)
而不是直接调用表单。只有Chrome和IE将元素ID添加到javascript全局范围

您应该使用
getAttribute()
来获取属性的值,因为只有IE有这个快捷方式

试试这个。


这就是你的答案

我不知道asp标签。我假设req是一个属性,所以这应该满足您的要求,只需在属性等于您的要求时发出警报,我使用一个快捷数组按标记名保存所有找到的元素,正如James所说,它更交叉

var a = [];
a = document.getElementsByTagName("input");
for(var i=0; i < a.length; i++){

if (theForm.elements[i].getAttribute('type')== "text" &&     theForm.elements[i].getAttribute('req') == "yes" ){
alert("Made it here wtih" + theForm.elements[i]) 
}
} 
var a=[];
a=document.getElementsByTagName(“输入”);
对于(变量i=0;i
表单的
是什么?你能把源代码(asp创建的)放到一个小提琴演示中吗?我们能有更多的信息吗?它适用于哪个版本的IE,不适用于哪个版本的其他浏览器?您是否只尝试匹配if语句的一部分,即单独等于text或req==yes?您是否尝试了OR语句而不是AND?您使用的是哪个库?你能给我们一个由你的asp标签生成的HTML标记的例子吗?版本是firefox是6.0,IE是7,Safari是5.1。是的,我自己尝试过(form.elements[a].req==“Yes”),发现这就是问题所在,但不明白为什么。我已经提醒了它,但是它没有定义,但是我查看了源代码,并在文本框中看到了变量,所以我不明白发生了什么。在这里,重新问同样的问题是不可接受的行为。如果你想引起大家对你的问题的注意,两天后你将被允许提问。您还可以添加其他信息,这可能会使您的问题更容易理解和回答。您可以在此处添加您的答案吗?当你的链接腐烂时,你的答案将毫无用处。。。