2012-02-22 12 views
0

これはotの作業である理由私は混乱している:Firefoxはちょうど空白の警告メッセージを警告するそうなのでJSはdocument.getElementByIdのidとして変数を使用していませんか?

var blocks = document.getElementsByTagName("td"); 
     var i = 0; 
     for(i=0;i<blocks.length;i++){ 
      var id = String(blocks[i].id); 
      var col_pos_y = document.getElementById(id).style.top; 
      alert(col_pos_y); 

     } 

は、私は何かが足りないのですか?なぜこれが機能していないのか誰でも知っていますか?

これはgetElementById()が働いていなかった場合は、戻り値に.style.topにアクセスしようとすると、エラーうとalertに到達することはないでしょうTDの

<table cellspacing="0" cellpadding="0" style="position: absolute; top: 80%; z-index:5;" border="0"> 
<?php 
$blocks = array(); 
for($k=1;$k<=3;$k++){ 
    $row_number = "row_".$k; 
?> 
    <tr id="<?php echo $row_number; ?>"> 
<? 
    for($i=0;$i<=100;$i++){ 
     if($k==1){ 
      $rand_number = rand(0, 100); 
     } 
     else if($k==2){ 
      $rand_number = rand(30, 100); 
     } 
     else if($k==3){ 
      $rand_number = rand(50, 100); 
     } 
     if($rand_number<50){ 
      for($l=0;$l<=count($blocks);$l++){ 
       $row_counter = $k-1; 
       if($blocks[$l]=="row_".$row_counter."_col_".$i."_type_grass"){ 
        $block_exists="true"; 
        break; 
       } 
       else{ 
        $block_exists="false"; 
       } 
      } 
      if($block_exists=="true"){ 
       array_push($blocks, $row_number."_col_".$i."_type_grass"); 

       $background_position = generate_dirt_block(); 
       ?> 
        <td id="<?php echo $row_number; ?>_col_<?php echo $i ?>_type_grass" style="font-size: 10px; cursor: pointer; background-image:url('img/terrain.png'); background-repeat: no-repeat; background-position: <?php echo $background_position ?>; min-width: 32px; height: 32px;"> 

        </td> 
       <?php 
      } 
      else{ 
       array_push($blocks, $row_number."_col_".$i."_type_blank"); 
       ?> 
        <td id="<?php echo $row_number; ?>_col_<?php echo $i ?>_type_blank" style="font-size: 10px; min-width: 32px; height: 32px;"> 

        </td> 
       <?php 
      } 
     } 
     else if($rand_number>=50 && $rand_number<=100){ 
      array_push($blocks, $row_number."_col_".$i."_type_grass"); 
      for($l=0;$l<=count($blocks);$l++){ 
       $row_counter = $k-1; 
       if($blocks[$l]=="row_".$row_counter."_col_".$i."_type_grass"){ 
        $block_exists="true"; 
        break; 
       } 
       else{ 
        $block_exists="false"; 
       } 
      } 
      if($block_exists=="true"){ 
       $background_position = generate_dirt_block(); 
       ?> 
        <td id="<?php echo $row_number ?>_col_<?php echo $i ?>_type_grass" style="font-size: 10px; cursor: pointer; background-image:url('img/terrain.png'); background-repeat: no-repeat; background-position: <?php echo $background_position ?>; min-width: 32px; height: 32px;"> 

        </td> 
       <?php 
      } 
      else{ 
       ?> 
        <td id="<?php echo $row_number; ?>_col_<?php echo $i ?>_type_grass" style="font-size: 10px; cursor: pointer; background-image:url('img/terrain.png'); background-repeat: no-repeat; background-position: 0px -32px; min-width: 32px; height: 32px;"> 
         <div style="width: 100%; position: relative; top: 0px;"> 
          <div style="background-image:url('img/terrain.png'); background-repeat: no-repeat; background-position: -384px 0px; width: 32px; height: 10px; position: absolute; top: -17px;"> 

          </div> 
         </div> 
        </td> 
       <?php 
      } 
     } 
    } 
?> 
    </tr> 
<?php 
} 
?> 
</table> 
+1

これに関連したHTMLを投稿できますか?アロス、なぜあなたはそれを分割した後に文字列を改造していますか? split()を呼び出す前と同じ方法で文字列を戻しているようです。 – phatskat

+0

"block_id"に値がありますか?あなたのTD IDはどのように見えますか? –

+0

yehはそれを無視していましたが、それは私の周りを試していましたが、 'document.getElementById(blocks [i] .id).style.top;'は何らかの理由でうまくいきません。私は実際にHTMLコード全体を投稿することはできません。なぜなら、これは100行のコードのようなtdを生成するPHPですが、私は試してみます –

答えて

4

の世代のためのHTML/PHPコードです。

要素の.style.topプロパティは単に空白(JavaScriptまたはstyle属性で設定されていないことを示します)です。

カスケード経由で適用されたプロパティにアクセスする場合は、getComputedStyleを使用してください。

通常のフローで設定した位置に戻したい場合はoffsetTopを使用してください)。

+0

素晴らしい答え - @レニーあなたが最初にgetElementByIdから有効な結果を得ているかどうかを確認しようとしましたか?赤ちゃんを追いかけているだけかもしれない。 – phatskat

+0

ええ、ありがとう、それは何が起こっていたのだろうかと思っていた愚かな間違いでした:しかし、それはそれを説明します:) –

+0

しかし、私は骨董品です、属性を配置しなくても位置を取得する方法はありますか? –

関連する問題