我有一些PHP
输出JavaScript
。我需要动态设置id
。由于使用了i
变量,以下代码在第3行中断。我希望这是引号的一个简单问题,但我可能错了。
$html .='$("#add").click(function (e) {';
$html .= 'var i=0;';
//Append a new row of code to the "#items" div
$html .='$("#items").append(\'<div><input name=\"input[]\" type=\"text\" id=\"itin_form_'+i+'\" /><button class=\"delete\">Delete</button></div>\'); i++; });';
有人能看出为什么这段代码失败了吗?
答案 0 :(得分:3)
这有用吗?
$html .= 'var i=0;';
$html .='$("#add").click(function (e) {';
//Append a new row of code to the "#items" div
$html .='$("#items").append(\'<div><input name="input[]" type="text" id="itin_form_\'+i+\'" /><button class="delete">Delete</button></div>\'); i++; });';
当转义为Javascript时,它应该返回:
var i=0;
$("#add").click(function (e) {
$("#items").append('<div><input name="input[]" type="text" id="itin_form_'+i+'" /><button class="delete">Delete</button></div>');
i++;
});
答案 1 :(得分:2)
此处的问题是,无论何时点击,i
的值都会初始化为0
。这确实是一个简单的愚蠢错误。您的代码为您提供了以下结果:
$("#add").click(function (e) {
var i=0;
$("#items").append('<div><input name="input[]" type="text" id="itin_form_'+i+'" /><button class="delete">Delete</button></div>');
i++;
});
但它应该有这样的东西:
var i = 0;
$("#add").click(function (e) {
$("#items").append('<div><input name="input[]" type="text" id="itin_form_'+i+'" /><button class="delete">Delete</button></div>');
i++;
});
查看上方var i = 0;
的展示位置。所以你的代码应该是:
$html .= 'var i=0;';
$html .='$("#add").click(function (e) {';
//Append a new row of code to the "#items" div
$html .='$("#items").append(\'<div><input name="input[]" type="text\\" id=\"itin_form_\'+i+\'" /><button class="delete">Delete</button></div>\'); i++; });';
您无需在上面的代码中转义"
。 :)
答案 2 :(得分:0)
您的代码开头存在许多问题:
var i=0
在函数内声明,因此它总是被重置,永远不会超过1。 解决方案:您只需在页面加载时声明一次,例如在<head>
部分的脚本标记中或jquery文档就绪调用内。我在下面展示了一个例子。
以下是test.php
测试和工作的示例我使用您的javascript代码创建了自己(我刚删除了所有转义字符以使其更具可读性):
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<div id="items"></div>
<input type="button" id="add" value="Add" />
<?php
$str =
<<<'EOT'
<script>
/* Start of Nowdoc
you can paste javascript code in here as-is!
*/
var i=0; // notice how I declared this outside of add.click
$("#add").click(function (e) {
$("#items").append('<div><input name="input[]" type="text" id="itin_form_'+i+'" /><button class="delete">Delete</button></div>');
i++;
}
);
/* End of Nowdoc */
</script>
EOT;
echo $str;
?>
输出:
将其添加到您的<head>
部分:
<script src="//code.jquery.com/jquery-1.10.2.js"></script>