2014-10-26 2 views
-4

Я стараюсь передавать данные в яваскрипта массив в моем конструкторе и получил эту ошибку:Javascript Массив не работает конструктор Poo

TypeError: this.listeetudiant is undefined 

Это мой конструктор:

function Cours(){ 

*/the array that doesnt work : */ 
this.listeetudiant=[]; 

*/ the method that is supposed to use the content of the array and to add data to the  array */ 
this.affForm=printForm; 

} 

тогда, я пытаюсь добавить к listeetudiant ДАННЫХ, используя метод, но он не работает:

function printForm(){ 
this.listeetudiant.push = (1); 
} 

и я стараюсь

this.listeetudiant.push(etudiant[id].id); 

где Etudiant [ID] .id является правильным вар ...

Но она по-прежнему не работает, и говорит TypeError: this.listeetudiant не определено.

PLease Помогите мне!

Он работает хорошо, когда есть только одна информация для добавления к одной уникальной переменной. Но это не работает с массивами! Мне нужно в течение нескольких промежутков времени вставлять несколько данных в свой массив listeetudiant, и это не работает вообще.

Для Exemple если я пишу:

function printForm(){ 
this.listeetudiant=(1); 
alert(this.listeetudiant); 
} 

он работает хорошо, и listeetudiant значение становится 1 в мой объект. проблема в том, что я не хочу добавлять одно значение, я хочу, чтобы listeetudiant был массивом и имел возможность добавить 30 значений! Snif!

+1

Вы называете 'this.listeetudiant.push = (1);'? Вероятно, это связано с тем, что, где бы вы ни находились, это не то, что вы думаете. – dursk

+0

Я действительно очень надеюсь, что 'etudiant [id] .id' equals' id' ... – spender

+2

Можете ли вы показать нам какой-то запущенный Javascript, который демонстрирует это, потому что что-то в вашем описании этой проблемы не складывается. – spender

ответ

2

Вы никогда не определяли this.listeetudiant. Вы создали конструктор, но вы никогда не вызываете конструктор так, чтобы this.listeetudiant еще не определился.
Если Кур должен быть объектом его нужно назвать его первым:

var cours = new Cours(); 

тогда вы могли бы сделать что-то вроде cours.listeetudiant.push();

function printForm(){ 
this.listeetudiant.push = (1); 
} 

- this в этом случае функция PrintForm , Функция в функции cours означает функцию cours. this относится к области, в которой вы находитесь. Listeetudiant - это массив, который является атрибутом объекта cours, поэтому, когда вы хотите нажать на этот массив, вам нужно ссылаться на объект, к которому он принадлежит, когда вы его вызываете.

+0

да Простите, что я изменил содержание моего ответа, чтобы вы лучше поняли. Извините, что я чужой. Большое спасибо за вашу помощь. –

+2

Даже с отредактированным ответом вы все равно не назовете своего конструктора. – Craicerjack

+0

Большое вам спасибо, но в моем полном коде я назвал конструктор так, как вы сказали var cours = new Cours(); Он работает даже с MONO VARIABLES, но не с ARRAYS. Я не понимаю, почему. –

0

Хорошо, спасибо всем вам Джек и

Большое спасибо за вашу помощь, наконец ... Сделано это работает так: функция PrintForm() { cours.listeetudiant.push («1» , '12'); }

Просто для информации, это был массив объектов таким образом, Я сделал это так: Кур [0] .listeetudiant.push ('1' , '12');

Удачного дня из Франции. Я помогу, если однажды смогу.

Если и хотят видеть то, что я работаю над кодом: http://nicolashcodes.wordpress.com/2014/09/29/exercice-19-supercours-logiciel-sur-tablette-android-daffectation-deleves-a-un-cours-par-drag-and-drop/

Я не знаю, как закрыть проблему?

+0

Если вы довольны ответом, вы можете нажать на стрелку под ним, чтобы принять его. – Craicerjack

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