Firefox认为< fieldset& gt;是一个表单元素;Chrome不会 [英] Firefox thinks <fieldset> is a form element; Chrome doesn't

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

问题描述

在我的JavaScript程序中,我通过表单的元素从表单获取值,然后在警报中按顺序打印它们.在Firefox中可以正常工作,但在Chrome中,顺序很古怪,并且以提交"按钮结束.

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.

我尝试摆脱字段集并调整数字,它确实起作用,但是我喜欢该字段集!另外,我不能仅创建一个数组并对其进行遍历,因为这些字段是按Tab键顺序调整的,因此我想相应地打印它们.有什么建议吗?

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?

在尝试验证时,我发现确实确实需要XHTML Strict的字段集.我一直将元素存储在数组中,就像这样:

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

推荐答案

我认为您最好使用ID:

I think you'll be better off using IDs:

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

因此您可以编写以下JavaScript代码:

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&amp; gt;是一个表单元素;Chrome不会的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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