2011-06-20 10 views
0

私からの別の初心者の質問。style.displayがnullです - 配列をループして表示プロパティを変更しようとしています

以下のコードが可能かどうかを確認するだけです。私は 'document.GetElementById's'で構成される新しい配列を作成します。私はかなりjavascriptに新しいので、私のコードは一般的に少し長い風が吹いているので、厄介さを許してください。

以下のコードは、 'style.display'が 'null'またはオブジェクトではないというエラーを表示しています。 誰かが明らかに何かを見たり、間違っていることがありますか?隠しフィールド(「personal2」など)が空白であれば

function Test(){ 

if(document.getElementById('inClient').value !=="FormViewer"){ 

    var visible =new Array("document.getElementById('personal2').value","document.getElementById('change_hours2').value"); 
    var change = new Array("document.getElementById('personal').value","document.getElementById('change_hours').value"); 

    for (var i=0; i <visible.length; i++) { 
     if(visible[i]!==""){ 
      change[i].style.display = "block" 
     } 
     } 
    } 
} 

は基本的に私は、DIV /セクション(「個人」など)は隠されたままにしたいが、それはテキストが含まれているならば、私はセクションを表示したいです。

ありがとうございます

+0

「アラート(変更)」を行い、配列に含まれる内容を確認します。 DOM要素は含まれません。 'visible'と同じですが、DOM要素の値は含まれていません。 –

答えて

2

DOMエレメントへの参照の代わりに文字列を配列に追加しています。引用符とvalueプロパティを削除しても機能します。繰り返し内でvalueをチェックする必要があります。

function Test(){ 

if(document.getElementById('inClient').value !=="FormViewer"){ 

    var visible =new Array(document.getElementById('personal2'), document.getElementById('change_hours2')); 
    var change = new Array(document.getElementById('personal'), document.getElementById('change_hours')); 

    for (var i=0; i <visible.length; i++) { 
     if(visible[i].value != ""){ 
      change[i].style.display = "block" 
     } 
     } 
    } 
} 
+0

多くのありがとう、それは私が通常見落とす小さな事のようなことです。あなたの答えを受け入れることができます。 –

+0

@MarkWalters:もう一つ、 'new Array'を使わないで、配列リテラル' var visible = [...、...];を使用してください。 –

+0

@Felix Kling:どうして私が新しい配列を使用したのかわかりません。しかし、代わりに配列リテラルを使うべき理由を説明できますか? –

0

このように使用する必要があります。ダブルクオートでは動作しません。

var visible =new Array(document.getElementById('personal2').value,document.getElementById('change_hours2').value); 
    var change = new Array(document.getElementById('personal').value,document.getElementById('change_hours').value); 
関連する問題