我有一个像这样的剧本
<script>
function myFunction(name)
{
document.getElementById("peep").innerHTML = "Rule " + name;
}
</script>
通常我会这样做。
<button onclick="myFunction('Attacking cost 5 engery')"> Attack </button>
注意''周围的bob,但我不知道如何将它们添加到这个php变量。
<button onclick="myFunction(<?php echo $desc?>)"><?php echo $name; ?></button>
编辑我如何获得$ desc和$ name
<php
$result = mysqli_query($con,"SELECT * FROM db_Rules");
while($row = mysqli_fetch_array($result)) {
$desc = $row['desc'];
$name = $row['rule'];
?>
<button onclick="myFunction('/<?php echo $desc;?>/')"><?php echo $name; ?></button>
<br>
<?php
}
?>
答案 0 :(得分:1)
此问题的一般解决方案是使用适当的转义函数。
您有一个要插入JavaScript的字符串,然后将该JavaScript插入HTML属性。
首先使用json_encode
来转义JS的字符串。由于JSON(或多或少)是JS的一个子集,因此这将适当地逃避它。
然后使用htmlspecialchars
来转义HTML的结果字符串。
myFunction(<?php echo htmlspecialchars(json_encode($desc)); ?>)
这会给你"
而不是'
,但效果会相同。
它还将处理具有其他需要转义的字符(例如新行)和更复杂的数据结构(数组或对象)的输入。
答案 1 :(得分:0)
只需将''
添加到<?php ?>
代码试用
<button onclick="myFunction('<?php echo $desc;?>')">
答案 2 :(得分:0)
<?php
$name = "Attack";
$desc = "Attack costs 5 energy.";
?>
让我们来看看如果执行PHP代码会发生什么:
button onclick="myFunction(Attack costs 5 energy.)">Attack</button>
该代码不起作用。您需要在Javascript函数中包含一些引号:
button onclick="myFunction('<?php echo $desc; ?>')"><?php echo $name; ?></button>
如果您多次将PHP标记插入HTML代码,代码就会变得混乱。因此,另一种方法是创建一种自定义参数,例如:
button onclick="myFunction('%description%')">%name%</button>
然后让PHP用实际的描述和动作名称替换它。
答案 3 :(得分:-1)
<button onclick="myFunction('<?php echo mysql_real_escape_string($desc);?>')">
<?php echo $name;?>
</button>