iT邦幫忙

0

PHP傳值JS

在很多列資料中,我想要點擊那行href時,把那行的(chi文字)傳到js並啟動js,
用了很多次都失敗,求幫忙
………………………………………………
PHP 同份檔案
foreach ($pdo->query('select * from word') as $row) {
echo '', $row['chi'], '';
echo "<a href='#' onclick='speaking($row['chi']);'/>顯示文字";
}

function speaking($row['chi'],) {
var ch=$row['chi'];
alert(ch)}

2
wrxue
iT邦新手 1 級 ‧ 2020-08-27 15:48:03
最佳解答

php是後端,js是前端
你把兩個前後端混在一起了
試試這樣吧

<?php
    foreach ($pdo->query('select * from word') as $row) {
        echo '', $row['chi'], '';
        echo "<a href='#' onclick='speaking(\"" . $row['chi'] . "\");'>發音</a>";
    }
?>
<script>
    function speaking(ch) {
        alert(ch)
    }
</script>
2
firecold
iT邦新手 3 級 ‧ 2020-08-27 15:51:55

單純傳值應該是這樣

<?php
$demo = 'demo';
?>

<script>
var php_value = <?php echo json_encode($demo)?>;
console.log(php_value); //show  demo
</script>

至於你的例子onclick傳不過去是因為

這段單雙引號你混用沒注意到
echo "<a href='#' onclick='speaking($row['chi']);'/>顯示文字";

onclick的單引號會吃掉$row['chi']裡面的造成錯誤
可以設置變數給它
$value = $row['chi'];
echo "<a href='#' onclick='speaking($value);'/>顯示文字";
echo "<a href='#' onclick='speaking({$value});'/>顯示文字";
echo "<a href='#' onclick='speaking(" . $value . ");'/>顯示文字";
以上三總應該都可以
要注意的是外面如果用單引號就不能用{}
1
浩瀚星空
iT邦超人 1 級 ‧ 2020-08-27 15:57:17

後端語言只會解析成html碼。並沒辦法對前端瀏覽器做任何動作。
當然了,你可以送出立即運行的js。但也只能在第一次開頁面處理。

不要將後端跟前端語言兩個搞在一起。觀念要分清楚。

我要發表回答

立即登入回答