この方法は機能しません(要素は関数内のwithからプルインされます)。
function styleTwitter1( pair_array )
{
var i;
var input;
var label;
var font_size;
for ( i = 0; i < pair_array.length; i+=2 )
{
/*
*/
input = document.getElementById( pair_array[ i ] );
label = document.getElementById( pair_array[ i + 1 ] );
/*
*/
label.fontSize = window.getComputedStyle( label, null ).getPropertyValue("font-size");
/*
*/
input.addEventListener( "keypress", function()
{
label.style.opacity = 0;
}, false );
/*
*/
input.addEventListener( "focus", function()
{
if( input.value === '' )
{
label.style.opacity = 0.2;
input.style.border = '1px solid #888888';
}
} , false );
/*
*/
input.addEventListener( "blur", function()
{
if( input.value === '' )
{
label.style.opacity = 1;
new EffectsFont( label ).fade( 'up', 150 );
input.style.border = '1px solid #dddddd';
}
} , false );
/*
*/
}
}
ただし、この方法では行われます(要素は関数の外部から注入されます)。
function initTwitterStyle( input, label )
{
/*
*/
input.addEventListener( "keypress", function()
{
label.style.opacity = 0;
}, false );
/*
*/
input.addEventListener( "focus", function()
{
if( input.value === '' )
{
label.style.opacity = 0.2;
input.style.border = '1px solid #888888';
}
}, false );
/*
*/
input.addEventListener( "blur", function()
{
if( input.value === '' )
{
label.style.opacity = 1;
new EffectsFont( label ).fade( 'up', 150 );
input.style.border = '1px solid #dddddd';
}
}, false );
/*
*/
}
違いがわからない場合は、配列ループを外側に引き出し、twitterStyle2に要素を挿入するだけです。
現在、エラーコードを取得できませんが、1つのペアのみが初期化されています。その後、EffectsFontが機能しません。
Jshintはループで関数を作成しないように警告していますが、理由がわかりません。どうした?