2016-10-28 17 views
2

私はリロードイメージスクリプトでJavaScriptを出力するためにPHPを使用しようとしていますが、動作させることはできません。JavaScript echo'ing JavaScriptが動作しない

元のコードは次のとおりです。

<script type="text/javascript"> 
    function reloadImage() { 
    var myDate = new Date(); 

    <?php 
     $len = count($_POST['custom_wall']); 
     for ($x = 0; $x < $len; $x++) { 
      $imgNum = $x + 1; 
      $jstxt1 = 'img' . $imgNum . '.src = \'http://' . $resultExplode[0] . '/jpeg?t=\' + myDate.getTIme();' . PHP_EOL; 
      echo $jstxt1; 
     } 
     echo '}' . PHP_EOL; 

     echo 'if (document.getElementByID) {' . PHP_EOL; 
     for ($y = 0; $y < $len; $y++) { 
      $imgNum2 = $y + 1; 
      $jstxt2 = 'var img' . $imgNum2 . ' = document.getElementByID(\'Cam' . $imgNum2 . '\');' . PHP_EOL; 
      echo $jstxt2; 
     } 

    ?> 
window.setInterval('reloadImage()', 1000); 

}   
</script> 

私はページを実行すると、それは(下記参照)正しい出力をレンダリングしますが、画像を再ロードしません。

<script type="text/javascript"> 
function reloadImage() { 
var myDate = new Date(); 
img1.src = 'http://172.16.140.56/jpeg?t=' + myDate.getTIme(); 
img2.src = 'http://172.16.140.56/jpeg?t=' + myDate.getTIme(); 
img3.src = 'http://172.16.140.56/jpeg?t=' + myDate.getTIme(); 
} 
if (document.getElementByID) { 
var img1 = document.getElementByID('Cam1'); 
var img2 = document.getElementByID('Cam2'); 
var img3 = document.getElementByID('Cam3'); 
window.setInterval('reloadImage()' , 1000); 
} 
</script> 

しかし、私がPHPを使用せず、出力されたとおりに正確にJSを挿入すれば、スクリプトは正しく動作します。

私は、PHPでスクリプト全体をエコーし​​てみましたが、おそらくそれが解釈していた順序が問題だったかもしれないと思っていましたが、運がありません。私はまた、行末機能を使用する必要があるのか​​どうか疑問に思いました。

アイデア?ありがとう。

+1

あなたがしようとしていますjsを関数にロードし、bodyタグで 'onload'を呼び出しますか? – harryparkdotio

+0

配列を考えてみましょう – user2182349

答えて

2

あなたif条件:document.getElementByIDundefinedあるので

if (document.getElementByID) { 

は常に、falseになります。 JSは大文字と小文字を区別する小文字dの端にDを変更:

if (document.getElementById) { 

それとも、すべてのブラウザがdocument.getElementByIdをサポートするので、それをテストする必要はありませんので、完全にifテストを削除します。

また、if内の行にも同じ変更を加える必要があります。

(最後に、script要素は、それが操作しようとする要素の後にどこかのページに含まれる必要があるだろう - 。クローズ</body>タグはスクリプト要素を置くための共通の場所である直前)

+0

もちろん大文字小文字の誤りです。ル・シー。それはずっと義務付けられていた。 –

関連する問題