以下是代码:
<nav>
<ul id="alphabet" class="pagination">
<li><a href="#" onClick="alert(#);">#</a></li>
<?php
$letterArray = str_split(strtoupper("abcdefghijklmnopqrstuvwxyz"));
foreach ($letterArray as $s) {
echo '<li><a href="#" onClick="alert('.$s.');">'.$s.'</a></li>';
}
?>
</ul>
</nav>
当我点击一封信时,我得到了,例如:
Uncaught ReferenceError: N is not defined
如果我用“&#39;&#39;或&#34;&#34;,它只是警告&#34; $ s&#34;。我怎样才能转移&#34;这个变量到Javascript是一个实际的字符串,而不是字面上的变量?
答案 0 :(得分:2)
您的foreach
代码应为:
foreach ($letterArray as $s) {
echo '<li><a href="#" onClick="alert(\''.$s.'\');">'.$s.'</a></li>';
}
您正在通过$s
而没有single quote
或double quote
。因此,当您点击链接时,它会被视为function
。
因此,您可以将$s
作为字符串backslash(\)
传递。
答案 1 :(得分:1)
您需要向JavaScript提供此字符串:
alert("N")
要实现此目的,您需要打印
alert("
然后输出变量$s
的值,然后输出
")
这一行将会这样做:
echo '<li><a href="#" onClick="alert("'.$s.'");">'.$s.'</a></li>';
或者(在我看来更好)是输出值的json_encode
,它会自动为字符串添加引号,还会转义任何应该转义的字符(如引号):
echo '<li><a href="#" onClick="alert('.json_encode($s).');">'.$s.'</a></li>';
将数据传递给JavaScript时, json_encode
非常有用,因为它也可以处理数组和数字,而不仅仅是字符串。
答案 2 :(得分:0)
我宁愿这样做
<nav>
<ul id="alphabet" class="pagination">
<li><a href="#" onClick="alert(#);">#</a></li>
<?php
$letterArray = str_split(strtoupper("abcdefghijklmnopqrstuvwxyz"));
foreach ($letterArray as $s) { ?>
<li><a href="#" onClick="alert('<?=$s?>');"><?=$s?></a></li>';
<?php } ?>
</ul>
</nav>