2012-06-21 102 views
1

我有一些圖像,我想要做的是在每個圖片上的鼠標來更改div內的文本,這是圖像標題。通過變量從PHP while循環到JavaScript函數

因此,這裏是我的代碼:

<?php 
... 

$i=0; 
while($i<$imageno) 
{ 

echo' 
<script type="text/javascript"> 
function changeText() {document.getElementById("title").innerHTML = "'.$title[$i].'";} 
</script>'; 

if ($imagine[$i]){ 
echo '<div onmouseover="changeText()"><img src="'.$imagine[$i].'"></div>'; 
}; 
$i++; 
} 

... 
?> 

但我的腳本只顯示我的最後一張照片的tscription ...

請幫幫忙! ......沒有Ajax

+0

除了下面答案中概述的函數定義問題,您在每次迭代中都使用'getElementById()',這意味着每次都會影響相同的元素。你不能有多個具有相同ID的元素,它們必須是唯一的。在我們可以告訴你正確的解決方案之前,你需要顯示更多的代碼(也就是你用id =「title」'定義元素的部分。) – DaveRandom

回答

3

你需要傳遞變量changeText功能:

echo '<div onmouseover="changeText('".$title[$i]."')"><img src="'.$imagine[$i].'"></div>'; 

而要改變changeText功能是這樣的:

function changeText(myText) {document.getElementById("title").innerHTML = myText;} 
+0

'echo'

';' – DaveRandom

1

你並不需要把功能循環中的定義,並且您需要使用參數。

<script type="text/javascript"> 
function changeText(title) {document.getElementById("title").innerHTML = title;} 
</script> 

<?php 
//... 
$i=0; 
while($i<$imageno) { 
    if ($imagine[$i]){ 
    $title = json_encode(htmlspecialchars($title[$i])); 
    echo '<div onmouseover="changeText('.$title.')"><img src="'.$imagine[$i].'"></div>'; 
    }; 
    $i++; 
} 
//... 
?> 
+0

檢查你的報價(沒有足夠的他們的 – DaveRandom

+0

@DaveRandom是的,thx指出它 – xdazz

+0

我剛剛意識到這仍然不會工作,因爲靜態'getElementById()' - 它會影響每次迭代相同的元素,所以你仍然不會看到除了最後一個'$ title [$ i]'之外的任何其他功能,OP需要提供更多的代碼,你也應該在'$ title [$ i]'和'htmlspecialchars() ' – DaveRandom