1

我是一名初级 PHP 程序员,我想知道我的代码出了什么问题。

以下是受影响地点的一小段摘录:

echo "<form action='?tab=4' name='toedit5' method='get'><input value='text' onblur='edit('toedit5')' /></form>";

在 Chrome 的开发者工具中,form元素完全消失,edit('toedit5')变成edit(' toedit5').

edit()函数不执行。

这一行代码有什么问题吗?否则它是外部代码弄乱它。对不起,我没有包括它,但我不知道该包括什么。如果您需要更多信息,请告诉我。

谢谢。

4

2 回答 2

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语句还是打开参数?在此示例中,您的浏览器将配对它看到的前 2 个引号并将其分配给onblur属性,即:onblur='edit('仅!

更新1:

使用上面的代码,我检查了我在 Chrome 的开发人员工具中创建的一个快速 PHP 页面,并且能够看到以下内容(可用于检查的表单):

开发者工具截图

于 2013-09-23T22:05:14.290 回答
4

您确实应该在 HTML 属性周围使用更标准的双引号,并在字符串周围使用单引号,并在 javascript 方法调用中使用转义的单引号。像这样:

echo '<form action="?tab=4" name="toedit5" method="get"><input value="text" onblur="edit(\'toedit5\')" /></form>';
于 2013-09-23T22:08:22.187 回答