Firefox считает <fieldset>элементом формы; Chrome не - PullRequest
0 голосов
/ 23 октября 2010

В моей JavaScript-программе я получаю значения из формы через ее элементы, а затем распечатываю их по порядку в виде предупреждения.Это отлично работает в Firefox, но в Chrome порядок дурацкий и заканчивается кнопкой «Отправить».

Я попытался избавиться от набора полей и настроить числа, и это сработало, но мне понравилось fieldset!Кроме того, я не могу просто создать массив и выполнить итерацию по нему, потому что поля настроены на порядок табуляции, и я хочу распечатать их соответственно.Любые предложения?

После попытки проверки я обнаружил, что мне действительно нужен набор полей для XHTML Strict.Я храню элементы в массиве, например так:

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;  

И затем проверяю их, используя другую пару массивов, и отображаю результаты во всплывающем окне:

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

Ответы [ 2 ]

1 голос
/ 24 октября 2010
0 голосов
/ 23 октября 2010

Я думаю, вам будет лучше использовать идентификаторы:

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

Таким образом, вы можете написать этот код JavaScript:

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

Ваш код также может быть значительно улучшен:

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'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...