2012-05-25 103 views
0

所以我改編自該做的工作,並在同一頁面上使用其他的功能的代碼。我不知道這是否能對它做任何事情,所以我想我會提及這一點,並且它們中都有id =「replace」,我不知道它是否會干擾。的JavaScript的onclick功能不能正常工作

反正代碼來調用該函數是這樣的:

if (mysql_num_rows($LIKE) != 0) 

{ 

    echo " 
     <td id=\"replace\" style=\"text-align:left\">".$like." Likes -- <a style=\"color:#234904\" onmouseover=\"this.style.color='#6666CC'\" onmouseout=\"this.style.color='#234904'\" id=\"" . $POST->id . "\" onclick=\"likePost(this.id)\" name=\"like\">Like This Post</td> 
     "; 
} 

JavaScript函數的定義是這樣的:

var xmlHttp; 

function likePost(x) 
{ 
xmlHttp=GetXmlHttpObject(); 
if (xmlHttp==null) 
{ 
alert ("Browser does not support HTTP Request"); 
return; 
} 

var pid = document.getElementById(x).id; 
var url="forum-like.php"; 
url+="?pid="+pid; 
url+="&sid="+Math.random(); 
xmlHttp.onreadystatechange=stateChanged; 
xmlHttp.open("GET",url,true); 
xmlHttp.send(null); 
} 

當我點擊我應該調用的函數,沒有任何反應。如果我使用js函數中調用的php頁面執行該腳本,那麼工作正常,但是...我不知道是否錯過了任何東西或錯誤,儘管...我也知道$ POST-> id部分確實呼叫正確的ID ...希望這是足夠的信息,否則讓我知道,我會編輯更多:D感謝您的任何幫助!

+0

打開Firefox + Firebug。打開NET選項卡並查看您的請求/響應。 –

回答

0

看起來你是路過this.id的功能,但隨後嘗試使用(X)來然後再查找該ID好像這就是一個DOM對象。

如果離開了PHP代碼的是,你可以改變你的JavaScript方法說:

url+="?pid="+x; 

而且你可以擺脫:(因爲你已經通過ID和不需要檢索它)

var pid = document.getElementById(x).id; 

希望能爲你工作!

1
var pid = document.getElementById(x).id 

您已經傳遞了id因此就使用

var pid = id; 

如果您仍然有問題,然後使用螢火蟲或瀏覽器的開發者工具,以獲得實際的JavaScript錯誤。

+0

儘管我認爲它需要,因爲JavaScript函數是在一個單獨的文檔中調用的,該文檔是從調用頁面的頁眉調用的?不知道...還有,我剛剛發現,它似乎冊的功能,但我需要刷新頁面來更新... – Elizabeth

+1

伊麗莎白,如果你不能改變js函數然後就改變你的PHP不會傳遞(this.id),而只是(this)。 – christurnerio

+0

!!這工作!除了它似乎干涉/混合其他JavaScript功能使用id = replace ...可能嗎? – Elizabeth