2012-07-28 19 views
2

我想在一定條件下改變img的src。我知道這個條件適當地返回true,因爲我以前寫過alert()。出於某種原因,該功能不會更改img的src並動態更新頁面。這可能與我使用jQuery庫的事實有關嗎?我認爲你仍然可以使用stand js語法。這裏是我的代碼片段和谷歌瀏覽器的相應源代碼。Grails:改變img的src的JS函數沒有響應

.gsp:

<script type="text/javascript"> 
function onSuccess(data){ 
    if(data.hasHearted){ 
     document.getElementById("changer${user.id}").src = "${resource(dir: "images/images", file: "heart_red.png")}"; 
    }  
} 

<figcaption id="secondcap" onClick="${remoteFunction(controller:'user', action:'heart', onSuccess: 'onSuccess(data)', params:[userID:user.id])}">    
      <img id="changer${user.id}" src="${resource(dir: "images/images", file: "heart.png")}" alt="heart"> 
</figcaption> 

鉻源(我省略了一些事情的隱私):

<script type="text/javascript"> 
function onSuccess(data){ 
    if(data.hasHearted){ 
     $('#changer3').attr('src','/Personably/static/images/images/heart_red.png'); 
    }  
} 
</script> 

<div class="persons"> 
<figure class="user_image">   
    <img class="user_profile_pic" src="omitted for privacy..." onmouseover="jQuery.ajax({type:'POST',data:{'userID': '3'}, url:'/Personably/user/hasHearted',success:function(data,textStatus){onSuccess(data);},error:function(XMLHttpRequest,textStatus,errorThrown){}});"/> 
    <figcaption id="firstcap"> 
      Omitted for privacy... 
    </figcaption>    
    <figcaption id="secondcap" onClick="jQuery.ajax({type:'POST',data:{'userID': '3'}, url:'/Personably/user/heart',success:function(data,textStatus){onSuccess(data);},error:function(XMLHttpRequest,textStatus,errorThrown){}});">     
      <img id="changer3" src="/Personably/static/images/images/heart.png" alt="heart"> 
    </figcaption> 
</figure> 
</div> 

回答

0

我不知道該頁面後更改src屬性是加載將改變用戶看到的,即使它改變了代碼,因爲該文件已加載。

相反,您應該在頁面上放置兩張圖像(heart.png和heart_red.png),然後根據控制器操作的輸出隱藏/取消隱藏它們。 jquery .toggle(布爾)方法對於像這樣的東西可能非常有用。 http://api.jquery.com/toggle/

裏面你的JavaScript函數,你可能只是有類似:

$('#heart3').toggle(!data.hearted); 
$('#heart_red3').toggle(data.hearted); 

然後,data.hearted的時候是真實的,紅色的心臟將顯示,和普通的心臟會隱藏。