如何在PHP代码块中使用Javascript变量?

如何在PHP代码块中使用Javascript变量?,javascript,jquery,codeigniter,Javascript,Jquery,Codeigniter,我试图在我试图在页面上动态添加的元素的类名后面附加一些数字。我将附加的数字是通过获取页面上现有目标元素的编号,然后通过jquery函数length获取 这是我的密码: $("#add_ingr").click(function(){ var id = $('.save').length + 1; var row = '<tr>' +'<td>'

我试图在我试图在页面上动态添加的元素的类名后面附加一些数字。我将附加的数字是通过获取页面上现有目标元素的编号,然后通过jquery函数length获取

这是我的密码:

$("#add_ingr").click(function(){

                var id = $('.save').length + 1;

                var row = '<tr>'
                            +'<td>' 
                                +'<?php $data = array('name' => 'ingr_name[]', 'class' => 'ingr_name'); echo form_input($data); ?>'
                            +'</td>'
                            +'<td>'  
                                +'<?php $data = array('name' => 'ingr_amount[]', 'class' => 'amt'); echo form_input($data); ?>'
                            +'</td>'
                            +'<td>'
                                +'<?php $data = array('name' => 'ingr_unit[]', 'class' => 'unit'); echo form_input($data); ?>'
                                +'<span class="remove">X</span>'
                                +'<span class="save" id="' +count +'">Save</span>' 
                            +'</td>';                                                               
                         +'</tr>';

                $("#ingr_table > tbody").append(row);

            });
$(“#添加”)。单击(函数(){
变量id=$('.save')。长度+1;
变量行=“”
+'' 
+''
+''
+''  
+''
+''
+''
+''
+“X”
+“保存”
+'';                                                               
+'';
$(“#ingr_table>tbody”)。追加(行);
});
我遇到了一些问题,因为var id是javascript的,我想将其附加到php数组值中,但我没有成功运行代码,因为当我执行以下操作时,它会生成错误:

$("#add_ingr").click(function(){

                var id = $('.save').length + 1;

                var row = '<tr>'
                            +'<td>' 
                                +'<?php $data = array('name' => 'ingr_name[]', 'class' => 'ingr_name_' +id); echo form_input($data); ?>'
                            +'</td>'
                            +'<td>'  
                                +'<?php $data = array('name' => 'ingr_amount[]', 'class' => 'amt_') +id; echo form_input($data); ?>'
                            +'</td>'
                            +'<td>'
                                +'<?php $data = array('name' => 'ingr_unit[]', 'class' => 'unit_' +id); echo form_input($data); ?>'
                                +'<span class="remove">X</span>'
                                +'<span class="save" id="' +count +'">Save</span>' 
                            +'</td>';                                                               
                         +'</tr>';

                $("#ingr_table > tbody").append(row);

            });
$(“#添加”)。单击(函数(){
变量id=$('.save')。长度+1;
变量行=“”
+'' 
+''
+''
+''  
+''
+''
+''
+''
+“X”
+“保存”
+'';                                                               
+'';
$(“#ingr_table>tbody”)。追加(行);
});

有人能解决我的问题吗?非常感谢您的帮助。

未终止的字符串文字错误可能是由于
之后

+'</td>';    
+'';

代码很难阅读,因为您混合了PHP和JavaScript。我建议将所有PHP移到一个块中,然后只输出PHP变量:
,以清晰起见

您真的需要CodeIgniter的
表单输入帮助程序吗

function form_input($data = '', $value = '', $extra = '')
{
  $defaults = array('type' => 'text', 'name' => (( ! is_array($data)) ? $data : ''), 'value' => $value);

  return "<input "._parse_form_attributes($data, $defaults).$extra." />";
}
函数形式_输入($data='',$value='',$extra='')
{
$defaults=array('type'=>'text','name'=>((!is_array($data))?$data:“”),'value'=>$value);
返回“”;
}
因为这只会返回

我想你可以把它转换成这个

var row = '<tr>'
            +'<td>' 
                +'<input name="ingr_name[]" class="ingr_name_'+id+'"/>'
            +'</td>'
            +'<td>'
                +'<input name="ingr_amount[]" class="amt_'+id+'"/>'
            +'</td>'
            +'<td>'
                +'<input name="ingr_unit[]" class="unit_'+id+'"/>'
                +'<span class="remove">X</span>'
                +'<span class="save" id="' +count +'">Save</span>' 
            +'</td>';                                                               
         +'</tr>';
var行=“”
+'' 
+''
+''
+''
+''
+''
+''
+''
+“X”
+“保存”
+'';                                                               
+'';

问题出在哪里?你发现了什么错误?我发现了:未终止的字符串文字错误。你是否意识到你所有的PHP代码都在web服务器上运行,所有的JavaScript都在web浏览器上运行,因此你的PHP无法访问任何JavaScript变量;在+之后,但仍然存在未终止的字符串文字错误。这正是我很难做到的,因为我会根据页面中存在的元素数量分配数字,并且我使用jquery进行计数,因为我不知道如何计算特定选择器的元素数量。感谢您的回复。我遵循了您的建议,实现了将id连接到类名上的目标。我想我不得不使用CI的form_助手,因为我使用的是框架。啊,是的。最好使用助手。但如果它不适合您的需要,您可以跳过它们,选择一个更简单的解决方案。:)