我是一名初学PHP程序员,我想知道我的代码出了什么问题。
以下是受影响地点的小摘录:
echo "<form action='?tab=4' name='toedit5' method='get'><input value='text' onblur='edit('toedit5')' /></form>";
在Chrome的开发者工具中,form
元素完全消失,edit('toedit5')
变为edit(' toedit5')
。
edit()
函数无法执行。
这一行代码有什么问题吗?否则就是外面的代码弄乱了它。对不起,我没有包含它,但我不知道要包含什么。如果您需要更多信息,请告诉我。
感谢。
答案 0 :(得分:5)
您需要在引用的echo'd语句中转义 引号中的引号,如下所示:
<?php
echo "<form action='?tab=4' name='toedit5' method='get'>";
echo "<input value='text' onblur='edit(\"toedit5\")' />"; // escaped..!
echo "</form>";
?>
当我开始时,它帮助我这样思考:浏览器如何知道onblur='edit('toedit5')'
中的第二个单引号是关闭onblur
语句还是打开参数?在此示例中,您的浏览器会将其看到的前两个引号配对,并将其分配给onblur
属性,即仅限onblur='edit('
!
更新1:
使用上面的代码,我检查了我在Chrome开发人员工具中创建的一个快速PHP页面,并且能够看到以下内容(可供检查的表单):
答案 1 :(得分:4)
你真的应该在HTML属性周围使用更标准的双引号,并在字符串周围使用单引号,在javascript方法调用中使用转义的单引号。像这样:
echo '<form action="?tab=4" name="toedit5" method="get"><input value="text" onblur="edit(\'toedit5\')" /></form>';