Firefox认为< fieldset>是一种形式元素; Chrome没有 [英] Firefox thinks <fieldset> is a form element; Chrome doesn't

查看:112
本文介绍了Firefox认为< fieldset>是一种形式元素; Chrome没有的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的JavaScript程序中,我通过它的元素从表单中获取值,然后按顺序打印出来。这在Firefox中工作正常,但在Chrome中,顺序是古怪的,它以提交按钮结束。



我试图摆脱字段和调整数字,它的工作,但我喜欢fieldset!此外,我不能只是一个数组,并遍历它,因为这些字段是按Tab顺序调整,我想相应地打印它们。任何建议吗?

在尝试验证后,我发现确实需要XHTML Strict的字段集。我已经将元素存储在一个数组中,如下所示:

$ p $ var $ $ function(id){return document.getElementById (ID); }

函数check(){
var x = $(myForm);

var user = new Array();
user [0] = x.elements [0] .value;
user [1] = x.elements [2] .value;
user [2] = x.elements [4] .value;
user [3] = x.elements [1] .value;
user [4] = x.elements [3] .value;
user [5] = x.elements [5] .value;

然后使用另外几个数组检查它们并在弹出窗口中显示结果: p>

  var answers = new Array(); 
答案[0] =sample1;
答案[1] =sample2;
答案[2] =sample3;
答案[3] =sample4;
答案[4] =sample5;
答案[5] =sample6;

var display = new Array();
for(var i = 0; i <6; i ++){
if(user [i] ==){
display [i] =您什么也没输入。
}
else if(user [i] == answers [i]){
display [i] =Correct!;

else {
display [i] =错误,正确的答案是\+ answers [i] +\。

$ b alert(display [0] +\ n+ display [1] +\\\
+ display [2] +\\\
+ display [3] +\ n+ display [4] +\ n+ display [5]);


解决方案

我想你会使用ID更好:

 < form ...> 
< input ... id =q0/>
< input ... id =q1/>
< input ... id =q2/>
< / form>

所以你可以写这个JavaScript代码:

  var answers = new Array(); 
答案[0] =sample1;
答案[1] =sample2;
答案[2] =sample3;
答案[3] =sample4;
答案[4] =sample5;
答案[5] =sample6;

var display = new Array(); (var i = 0; i <6; i ++){
var user = $('q'+ i).value;
if(user ==)
display [i] =你什么也没输入。
else if(user == answers [i])
display [i] =Correct!;
else
display [i] =错误,正确答案是\+ answers [i] +\。
}
alert(display [0] +\ n+ display [1] +\\\
+ display [2] +\\\
+ display [3] + \ n+ display [4] +\ n+ display [5]);

您的代码也可以得到很多改进:

  var answers = [sample1,sample2,sample3,sample4,sample5,sample6]; 

var display = new Array(); (var i = 0; i <6; i ++){
var user = $('q'+ i).value;
if(user ==)
display.push(You entered nothing。);
else if(user == answers [i])
display.push(Correct!);
else
display.push(错误,正确答案是\+ answers [i] +\。);
}
alert(display.join('\\\
'));


In my JavaScript program, I get values from a form through its elements and then print them in order, in an alert. This works fine in Firefox, but in Chrome the order is wacky and it ends with the "Submit" button.

I tried getting rid of the fieldset and adjusting the numbers, and it worked, but I liked the fieldset! Also, I can't just make an array and iterate through it because the fields are tab-order adjusted and I want to print them accordingly. Any suggestions?

Upon trying to validate I found that I do indeed need the fieldset for XHTML Strict. I've been storing the elements in an array, like so:

var $ = function (id) { return document.getElementById(id); }

function check() {
var x = $("myForm");

var user = new Array();
user[0] = x.elements[0].value;  
user[1] = x.elements[2].value;  
user[2] = x.elements[4].value;  
user[3] = x.elements[1].value;  
user[4] = x.elements[3].value;  
user[5] = x.elements[5].value;  

And then checking them using another couple of arrays and displaying the results in a pop-up:

var answers = new Array();
answers[0] = "sample1";
answers[1] = "sample2";
answers[2] = "sample3";
answers[3] = "sample4";
answers[4] = "sample5";
answers[5] = "sample6";

var display = new Array();
for (var i=0;i<6;i++) {
    if (user[i] == "") {
        display[i] = "You entered nothing.";
        }
    else if (user[i] == answers[i]) {
        display[i] = "Correct!";
        }
    else {
        display[i] = "Wrong. The correct answer is \"" + answers[i] + "\".";
        }
    }
alert(display[0] + "\n" + display[1] + "\n" + display[2] + "\n" + display[3] + "\n" + display[4] + "\n" + display[5]);
}

解决方案

I think you'll be better off using IDs:

<form ...>
  <input ... id="q0" />
  <input ... id="q1" />
  <input ... id="q2" />
</form>

So you can write this JavaScript code:

var answers = new Array();
answers[0] = "sample1";
answers[1] = "sample2";
answers[2] = "sample3";
answers[3] = "sample4";
answers[4] = "sample5";
answers[5] = "sample6";

var display = new Array();
for (var i=0;i<6;i++) {
  var user = $('q' + i).value;
  if (user == "")
    display[i] = "You entered nothing.";
  else if (user == answers[i])
    display[i] = "Correct!";
  else
    display[i] = "Wrong. The correct answer is \"" + answers[i] + "\".";
}
alert(display[0] + "\n" + display[1] + "\n" + display[2] + "\n" + display[3] + "\n" + display[4] + "\n" + display[5]);

Your code can receive a lot of improvement, too:

var answers = [ "sample1", "sample2", "sample3", "sample4", "sample5", "sample6" ];

var display = new Array();
for (var i=0;i<6;i++) {
  var user = $('q' + i).value;
  if (user == "")
    display.push( "You entered nothing." );
  else if (user == answers[i])
    display.push( "Correct!" );
  else
    display.push ( "Wrong. The correct answer is \"" + answers[i] + "\"." );
}
alert(display.join('\n'));

这篇关于Firefox认为&lt; fieldset&gt;是一种形式元素; Chrome没有的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆