簡體   English   中英

從PHP到JS的未定義變量

[英]Undefined variable from php to js

我有一個循環發布數據庫中的圖像。 我試圖給每個照片div單獨的ID。 當我嘗試通過onclick函數將其發送到腳本時,它表明“ $ photoid未定義”,我試圖在此第一個php腳本中打印此變量,但它顯示了所有ID,因此不應為空或未定義...

$allphotos = mysql_query("SELECT * FROM photos ORDER BY id DESC");

while ($numphotos = mysql_fetch_assoc($allphotos)){

$photoinfo = mysql_query('SELECT * FROM photos WHERE link="'.$numphotos['link'].'" ');
$fetchinfo = mysql_fetch_assoc($photoinfo);

$photoid = $fetchinfo['id']; 
echo '<div class="thisphotobox" id="'.$photoid.'"><img src="'.$numphotos['link'].'" alt="photo" class="photolink" onclick=clicked($photoid)></div>';
}

腳本如下:

  <script>
    function clicked(photoid){
    document.getElementById('photoid').style.backgroundColor = 'red'
    }
    </script>

更改此:

echo '<div class="thisphotobox" id="'.$photoid.'"><img src="'.$numphotos['link'].'" alt="photo" class="photolink" onclick=clicked($photoid)></div>';

對此:

echo '<div class="thisphotobox" id="'.$photoid.'"><img src="'.$numphotos['link'].'" alt="photo" class="photolink" onclick="clicked('.$photoid.');"></div>';

否則,輸出僅是clicked($photoid) ,即所有文本。

同時更改:

function clicked(photoid){
document.getElementById('photoid').style.backgroundColor = 'red'
}

對此:

function clicked(photoid){
document.getElementById( photoid.toString() ).style.backgroundColor = 'red';
}

上面的答案有效,但是他們忘了添加一些東西,

代替

echo '<div class="thisphotobox" id="'.$photoid.'"><img src="'.$numphotos['link'].'" alt="photo" class="photolink" onclick="clicked('.$photoid.');"></div>';

復制此代碼

echo '<div class="thisphotobox" id="'.$photoid.'"><img src="'.$numphotos['link'].'" alt="photo" class="photolink" style="background-color:white" onclick="clicked('.$photoid.');"></div>';

添加style="background-color:white;" 我認為,如果未在div中初始化.style,則無法在js中訪問。 希望這會有所幫助

這只是一個逃避的問題。 如果是字符串,則必須對已回顯的函數中的參數$ photoid進行轉義。 在上面的代碼中:

onclick=clicked($photoid)

應該

onclick="clicked($photoid)"

如果$ photoid是數字或

onclick="clicked(\'$photoid\')"

如果是字母數字或字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM