0

イベントのタイマーを表示する必要があるアプリがあり、イベントが終了すると、そのタイマー (それを含むブロック) が非表示になります。タイマー要素には動的ID(クラス名とともにイベントのID番号がある)があるため、親div要素(そのブロック)のCSSを設定しました。

これは JavaScript コードです:

function GetCount(deal_year,deal_month,deal_date,deal_box)
    {
    dateFuture = new Date(deal_year,deal_month,deal_date,00,00,00);

   // alert(dateFuture); return false;

dateNow = new Date();                                   //grab current date
//alert(dateNow);
span = dateFuture.getTime() - dateNow.getTime();  //calc milliseconds between dates
delete dateNow;

// if date has passed
if(span <= 0){

          x=document.getElementById("dealbox");
          x.parentNode.getAttributeNode("style").value="display:none";

         } 
    else { // date is still good
           // convert from milliseconds to hr/m/s...
            // and save them in diff variable(code is long so avoided that)


       document.getElementById(deal_box).innerHTML="<span>"+out+"
  </span><br/><strong>days : hours :  minutes : seconds</strong>";


  setTimeout("GetCount('"+deal_year+"','"+deal_month
                       +"','"+deal_date+"','"+deal_box+"')", 1000);

回答これはphpコードです

 if(strtotime("now") < strtotime($end_date)) { ?>                      

      <div class ="timer_box" id="timer" style="float:right; display: block;" >

         <b><div id="deal_box<?php echo $id; ?>"></div></b>
      </div>

      <script type="text/javascript">
    GetCount(<?php echo $timer_array[0]; ?>,<?php echo $timer_array[1]-1; ?>,<?php 
 echo $timer_array[2]; ?>,'<?php echo 'deal_box'.$id; ?>','<?php echo 'timer'; ?>');
      </script>  <?php } ?>

関数に渡されたDOM要素のparentNodeアクセスを使用して、親ブロックを非表示にしようとしました。しかし、うまくいきませんでした。関数が要素を介して親の場合にアクセスできないと思われます。私はあらゆることを試しましたが、助けにはなりませんでした。要素のクラス名をjavascriptで変更する回避策を試しましたが、まだ何かが足りないので、もっと良い方法があると思います。

4

1 に答える 1

0

phpスクリプトが示すように、 "deal_box"という接尾辞が付いたnumber(id)がありますが、getElementById( "deal_box")を使用してjavascriptでアクセスしますか?

つまり、IDが恋しいですか?通常、2つのケースで特定のDomのスタイルを設定できません。1、正しいセレクターを介してDomを取得しません。2、スタイル設定コードにいくつかの構文上の問題があります。

console.log()または他の関数を使用してコードをトレースすることをお勧めします。

于 2012-07-19T04:33:05.273 に答える