2013-06-21 30 views
1

有頁X服務器上的X,像這樣更改與遠程股利JavaScript文件

<script type="text/javascript" src="http://pageYserverY.com/remote.php?hat=strong"></script> 
<div name="lev">Hallo world</div> 

一個html文件考慮JS文件從遠程服務器Y.

該文件包含上頁面Y(remote.php)看起來像這樣:

<?php 
    Header("content-type: application/x-javascript"); 
    $hat = $_GET["hat"]; 
    echo "document.write(\"$hat\");"; // write it once 
?> 
document.getElementsByName("lev").innerHTML="Hello World AGAIN"; 

爲什麼它不改變div。我的整個方法和我對跨瀏覽器JS的理解是錯誤的嗎?

btw:調用php生成的js是google本身在recaptcha和google廣告上使用的一種方法。

回答

1

我想你會發現它只是一個訂購問題。 JavaScript在div準備好之前正在執行。

移動腳本的DIV下方,就像這樣:

<div name="lev">Hallo world</div> 
<script type="text/javascript" 
src="http://pageYserverY.com/remote.php?hat=strong"></script> 
+0

THX布魯德。使用jQuery和doc.ready讓我盲目看到明顯的。 – Email

1

更好您使用getElementByIdgetElementsByName

GetElementsByName方法返回一個數組,並且當您試圖調用element.focus()時,由於陣列上沒有focus方法,所以出現錯誤。當您在事件處理程序中發生錯誤時,它不會阻止表單發佈。

如果您使用GetElementById您應該使用element來訪問該元素,如果您使用GetElementsByName,則應使用element[0]

重複

getElementById gets an element via an id. getElementsByName returns an Array of elements by their name. 

那麼這就是工作:

<div id="lev">Hallo world</div> 

<?php 
Header("content-type: application/x-javascript"); 
$hat = $_GET["hat"]; 
echo "document.write(\"$hat\");"; // write it once 
?> 
document.getElementById("lev").innerHTML="Hello World AGAIN"; 
+0

是問題的一部分。 +1。祝你今天愉快 – Email