2013-11-24 7 views
0

Здравствуйте, я пытаюсь создать массив ошибок и отобразить их сразу. Что-то вроде этого.JavaScript array - неожиданный токен

if (!first_name) { 
    var error[] = "Заполните Фамилию"; 
    $('#first_name').addClass('error'); 
} else { 
    $('#first_name').removeClass('error'); 
} 

if (!second_name) { 
    var error[] = 'Заполните Имя'; 
    $('#second_name').addClass('error'); 
} else { 
    $('#second_name').removeClass('error'); 
} 
if (!last_name) { 
    var error[] = 'Заполните Отчество'; 
    $('#last_name').addClass('error'); 
} else { 
    $('#last_name').removeClass('error'); 
} 
if (!course) { 
    var error[] = 'Заполните Курс'; 
    $('#course').addClass('error'); 
} else { 
    $('#course').removeClass('error'); 
} 
if (!math && !programming && !english && !history) { 
    var error[] = 'Заполните хотябы один предмет'; 
    $('#math,#programming,#english,#history').addClass('error'); 
} else { 
    $('#math,#programming,#english,#history').removeClass('error'); 
} 

, а затем

if(error.length > 0) { 
    $(".errors").html(error); 
} 

Но я получаю сообщение об ошибке неперехваченным SyntaxError: Неожиданный маркер]

Что я делаю не так?

+0

Ниже я поставил более подробный ответ, но вы, вероятно, нашли бы все это сами, выполнив код с помощью синтаксического анализатора Javascript или загрузив страницу в браузер с активированным отладчиком Javascript.Если у вас есть Firefox, плагин Firebug будет намного лучше, чем встроенный отладчик. – vogomatix

ответ

3

Два главных проблем - массив ошибка была быть повторно и неправильно объявлены, и отображение результирующего массива в настоящее время обрабатываются неправильно. Вот исправление для обеих проблем ....

var error = []; // initialise empty array 
if (!first_name) { 
    error.push("Заполните Фамилию"); 
    $('#first_name').addClass('error'); 
} else { 
    $('#first_name').removeClass('error'); 
} 

if (!second_name) { 
    error.push('Заполните Имя'); 
    $('#second_name').addClass('error'); 
} else { 
    $('#second_name').removeClass('error'); 
} 
if (!last_name) { 
    error.push('Заполните Отчество'); 
    $('#last_name').addClass('error'); 
} else { 
    $('#last_name').removeClass('error'); 
} 
if (!course) { 
    error.push('Заполните Курс'); 
    $('#course').addClass('error'); 
} else { 
    $('#course').removeClass('error'); 
} 
if (!math && !programming && !english && !history) { 
    error.push('Заполните хотябы один предмет'); 
    $('#math,#programming,#english,#history').addClass('error'); 
} else { 
    $('#math,#programming,#english,#history').removeClass('error'); 
} 

// you will need to join the elements together somehow before displaying them 
if (error.length > 0) { 
    var data = error.join('<br />'); 
    $(".errors").html(data); 
} 

Вы также можете посмотреть на использование функции toggleClass вместо добавления/удаления, но это до вас

2

Все эти строки содержат синтаксические ошибки:

var error[] = ... 

потому error[] не valid JavaScript identifier. Удалите [] с. Ближайшим действительным именем переменной будет error вместо error[].

Этот вид ошибки делается болезненно очевидным при запуске кода через a JavaScript linter tool.

+1

@ user3026704: Что Мэтт снова сказал: * «Удалите' [] 's * *. Например, 'var error = ...' –

+0

, если я удалю [], как это может быть массив? – user3026704

+1

@ user3026704 JavaScript не является PHP. Имена переменных не имеют ничего общего с типами в JavaScript. –

1

Вы путаете JavaScript с PHP.

Это неверно способ объявить массив:

var error[] = 'Заполните Отчество'; 

а:

var error = new Array(); 

или

var error = []; 
1

Для добавления значения в массив с помощью JavaScript:

var error = []; 
error.push('Error 1'); 
error.push('Error 2'); 

Затем, чтобы отобразить их:

$('.errors').html(
    error.join('<br/>') // "Error 1<br/>Error 2" 
); 

Doc: push, join.

0

Вы можете отобразить все сообщение об ошибке сразу, как эту ошибку

var error='' 
if (!first_name) { 
    error += "Заполните Фамилию.<br />"; 
    $('#first_name').addClass('error'); 
} else { 
    $('#first_name').removeClass('error'); 
} 

if (!second_name) { 
    error += 'Заполните Имя<br />'; 
    $('#second_name').addClass('error'); 
} else { 
    $('#second_name').removeClass('error'); 
} 

if (!last_name) { 
    error += 'Заполните Отчество<br />'; 
    $('#last_name').addClass('error'); 
} else { 
    $('#last_name').removeClass('error'); 
} 

if (!course) { 
    error += 'Заполните Курс<br />'; 
    $('#course').addClass('error'); 
} else { 
    $('#course').removeClass('error'); 
} 

if (!math && !programming && !english && !history) { 
    error +='Заполните хотябы один предмет<br />'; 
    $('#math,#programming,#english,#history').addClass('error'); 
} else { 
    $('#math,#programming,#english,#history').removeClass('error'); 
} 

if (error != '') { 
    $(".errors").html(error); 
    return false; 
} 

является одной переменной, где я хранить все ошибки и дисплей сразу на экране.

Смежные вопросы