this
(2行目)エラーを使用する最初のステートメント:
this is undefined
行番号を確認しました。このスタイルの使用がSMessageと呼ばれる別の関数で機能することを確認しました。オブジェクトのプロパティと等しくないように引数名を変更しようとしました。this.tag_arrayに割り当てられない理由がわかりません。検証済みのtag_array1が値の配列として入力されました。
var VBPaneInit = function ( tag_array1 ) {
this.tag_array = tag_array1;
this.initializeTags();
this.initializePages();
VBPaneInit.prototype.initializeTags = function( ) {
var element;
for ( element = 0; element < this.tag_array.length; element++ )
{
document.getElementById( this.tag_array[element] ).onclick = vDomPageFlip;
}
};
VBPaneInit.prototype.initializePages = function( ) {
if ( this.tag_array.length === 0 )
{
return;
}
var index, page_element;
for ( index = 0; index < this.tag_array.length; index++ )
{
page_element = document.getElementById( this.tag_array[index] + '_page' );
page_element.style.display = 'none';
}
vDomPageFlip( this.tag_array[0] );
};
};
呼び出し
VBPaneInit( tag_array );
テストの目的で、次のように減らします。
var VBPaneInit = function( tag_array ) {
this.tag_array = tag_array;
}
まだ行きません。
同様に機能する:
var SMessage = function ( element ) {
this.element = element;
SMessage.prototype.display = function( type ) {
this.element.innerHTML = this.messages[ type ];
};
SMessage.prototype.messages = {
name: 'Please enter a valid name',
email: 'Please enter a valid email',
pass: 'Please enter password, 6-40 characters',
url: 'Please enter a valid url',
title: 'Please enter a valid title',
tweet: 'Please enter a valid tweet',
empty: 'Please complete all fields',
same: 'Please make emails equal',
taken: 'Sorry, that email is taken',
validate: 'Please contact <a class="d" href="mailto:chris@host.com">support</a> to reset your password',
s_name: 'Please enter a valid name.',
s_email: 'Please enter a valid email.',
s_pass: 'Please enter password, 6-40 characters.',
s_url: 'Please enter a valid url.',
s_title: 'Please enter a valid title.',
s_tweet: 'Please enter a valid tweet.',
s_empty: 'Please complete all fields.',
s_same: 'Please make emails equal.',
s_taken: 'Sorry, that email is taken.',
s_validate: 'Please contact <a class="d" href="mailto:chris@host.com">support</a> to reset your password.'
};
};