我正在使用PHP构建网页。我有一个带有多个按钮的桌子。我正在使用以下代码在for循环中构建按钮:
echo "<tr><td><input type='button' value='".$row['Descripcion']."'";
echo "onclick=EliminarHashTag('".$row['ID']."','";
echo $row['Descripcion'];
echo "','Norma','".$Codigo."','".$Organizacion."')> </td></tr>";
只要我的变量是由单个单词组成的字符串,一切正常。例如,如果
它是$row['Descripcion']="manometros"
,(没有空格的字符串)echo输出如下:
<input type="button" value="Manometros" onclick="EliminarHashTag('14','Manometros','norma','k-300','pdvsa')="">
但是如果我的变量是由带有空格$row['Descripcion']="Criterios Generales"
的字符串组成的,那么echo会在空格中输出引号,弄乱javascript函数调用语法,从而使代码不起作用(Criterios“Generales)。” / p>
<input type="button" value="Criterios Generales" onclick="EliminarHashTag('14','Criterios" generales','norma','k-300','pdvsa')="">
我在php.net上阅读了echo文档,但我没有看到这个问题。我做错了吗?
答案 0 :(得分:1)
如果不引用属性,则属性值将在第一个空格或标记末尾结束。
在onclick周围添加引号......
echo " onclick=\"EliminarHashTag('".$row['ID']."','";
^^ ^^
和
echo "','Norma','".$Codigo."','".$Organizacion."')\"> </td></tr>";
^^
现在,如果任何值都有双引号,则需要将其作为html权限进行转义。或者您需要将单个换成双倍。
答案 1 :(得分:1)
您的HTML无效,调试工具(如firebug和chrome开发人员工具)会尝试更正它以显示正确的domtree。
您不仅错过了onclick
属性的结束引用,还通过在onclick函数参数中使用相同类型的引号来打破封装:
echo '<tr><td><input type="button" value="'.$row['Descripcion'].'"';
echo 'onclick="EliminarHashTag(\''.$row['ID'].'\',\'';
echo $row['Descripcion'];
echo '\',\'Norma\',\''.$Codigo.'\',\''.$Organizacion.'\')"> </td></tr>';
答案 2 :(得分:0)
尝试使用反斜杠转义引号:
echo "onclick=EliminarHashTag('".$row['ID']."',\"";
echo $row['Descripcion'];
echo "\",'Norma','".$Codigo."','".$Organizacion."')> </td></tr>";
我将变量前后的'
更改为\"
。