JavaScript问题处理不同的浏览器

时间:2011-08-23 18:27:46

标签: 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.length; a++) {
  if (theForm.elements[a].type == "text" && theForm.elements[a].req == "yes") {
    alert("Made it here")
  }
}

5 个答案:

答案 0 :(得分:1)

使用getAttribute阅读自定义属性。请参阅http://jsfiddle.net/8EWQr/

所以而不是

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

使用

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

答案 1 :(得分:1)

我不知道asp标签。我假设req是一个属性所以这应该做你所要求的只是警告如果属性是否等于你的要求,我使用一个快捷方式数组来按标签名称保存所有找到的元素,因为詹姆斯说它更多的crossbrowser。

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]) 
}
} 

答案 2 :(得分:0)

尝试使用document.getElementsByTagName,因为我相信所有浏览器都支持此功能。

var linkList = document.getElementsByTagName("a");

答案 3 :(得分:0)

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

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

试试这个example

答案 4 :(得分:0)