2011-08-23 65 views
0

我遇到的问题是我的代码在JavaScript中工作正常,但在Firefox或Safari中无法正常工作,并想知道原因。我正在做的是我有一个循环遍历每个元素,并根据文本框中的变量只是想警告一些东西。就像我之前说过的,这段代码在IE中工作正常。这是下面的代码:JavaScript处理不同浏览器的问题

下面是文本框的例子:

<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") 
    } 
} 
+1

什么是'theForm'?你可以把源代码(即asp创建的)放到小提琴演示中吗? – Neal

+0

你在使用什么库?你能给我们一个由你的asp标签生成的HTML标记的例子吗? –

+0

重新提出同样的问题在这里是不可接受的行为。如果你想引起人们对你的问题的关注,那么两天后你将被允许[放置赏金](http://stackoverflow.com/faq#bounty)。您也可以[编辑您的问题](http://stackoverflow.com/posts/7165804/edit)添加其他信息,这可能会使您的问题更易于理解和回答。 – Will

回答

1

使用getAttribute来读取自定义属性。见http://jsfiddle.net/8EWQr/

所以不是

(theForm.elements [A] .TYPE == “文本” & & theForm.elements [A] .req == “是”)

使用

(theForm.elements [A] .getAttribute( '类型')== “文本” & & theForm.elements [A] .getAttribute( 'REQ')== “是”)

+0

感谢他们工作。谢谢你的帮助。 – Will

0

尝试使用document.getElementsByTagName,因为我相信这是在所有的浏览器都支持。

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

您应该使用var theForm = getElementById("theForm")代替打电话给th eForm直接。只有Chrome和IE才会将元素ID添加到javascript全局范围中。

而且您应该使用getAttribute()来获取属性的值,因为只有IE具有此快捷方式。

试试这个example

+0

谢谢,它的工作 – Will

1

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

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