如何正确回显 onclick='function($var)'

Posted

技术标签:

【中文标题】如何正确回显 onclick=\'function($var)\'【英文标题】:how to properly echo onclick='function($var)'如何正确回显 onclick='function($var)' 【发布时间】:2017-10-11 21:06:30 【问题描述】:

当我回显这张表时:

echo "<table class='aTable'  border='1'>
<tr>
<th>ID</th>
<th>Nombre</th>
<th>Apellido</th>
<th>Telefono</th>
<th>Fecha</th>
<th>Ver Orden</th>
</tr>";

while($row = $gsent->fetch(PDO::FETCH_ASSOC))

echo "<tr>";
echo "<td>" . $row['IdOrder'] . "</td>";
echo "<td>" . $row['Name'] . "</td>";
echo "<td>" . $row['Apellido'] . "</td>";
echo "<td>" . $row['Phone'] . "</td>";
echo "<td>" . $row['TimeStamp'] . "</td>";
echo "<td>" ."<input type='submit' name='ID' value='VER' onclick='showOrder($row['IdOrder'])'>"."</td>";
echo "</tr>";

echo "</table>";

我希望最后一列显示一个触发 javascript 函数的按钮

    <script>
        function showOrder(IdOrder)
            jQuery('#list-data').val(IdOrder);
            document.getElementById("formOrder").submit();
            console.log('php:  ' + IdOrder );

            var delayMillis = 500;
            setTimeout(function() 
              window.location.href = 'ask.php';
               , delayMillis);

</script>

当按钮$row['IdOrder'] 包含一个数字(例如 1521 或 00254)时,一切正常,但当它具有十六进制数字时,它将无法工作或行为异常,例如在 ADAC 中 chrome 控制台显示此错误:

未捕获的 ReferenceError:未定义 ADAC 在 htmlInputElement.onclick

或者,如果十六进制为 39E3,则函数运行,但我在函数 39000 中得到这个数字,我不知道为什么,但它是正确的,因为在谷歌中,如果我将 39E3 设为十进制,我会得到那个数字,但我不希望 39E3 转换本身到 39000 所以我的猜测是变量 $row['IdOrder'] 如果它以数字或字母开头,则被视为不同,我希望 $row['IdOrder'] 始终被视为文本以避免这种奇怪的转换,如果它可能或也许,做 我必须走另一条路?

【问题讨论】:

试试$row["IdOrder"] 以字符串形式传递$row['IdOrder'] 【参考方案1】:

如果您的IdOrder 不是纯数字值,则必须用引号将其括起来,以成为字符串:

"<input type='submit' name='ID' value='VER' onclick='showOrder(\"$row['IdOrder']\")'>"

它应该打印如下内容:

<input type='submit' name='ID' value='VER' onclick='showOrder("myId")'>

所以编译器不会试图猜测ADAC 是一个对象而不是一个字符串。

【讨论】:

【参考方案2】:

替换

$row['IdOrder']

\"$row['IdOrder']\"

把它变成一个字符串。

【讨论】:

@DontVoteMeDown 嗯?我们的cmets,这个答案和你的都一样吗?他们如何解决错误? 我想知道为什么投票是匿名的。数据是明显存储的,如果用户离开,你会失去或获得从他们的投票中获得或失去的积分。 哦,抱歉,我没有注意到另一个是不正确的:|

以上是关于如何正确回显 onclick='function($var)'的主要内容,如果未能解决你的问题,请参考以下文章

如何回显表的正确行数[重复]

值未正确传递给 onClick 函数

如何正确地将 CSS 应用于 PHP 回显?

onclick命令中如何传递参数?

如何正确定义 onClick 事件?

如何判断输入的邮箱是否正确