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

时间:2011-09-05 06:51:40

标签: javascript jquery codeigniter

我试图将一些数字附加到我试图在页面上动态添加的元素的类名。我将追加的数字是通过获取页​​面上现有目标元素的编号,并通过jquery函数长度得到它。

这是我的代码:

$("#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);

            });

我遇到了麻烦,因为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);

            });

有没有人能解决我的问题?非常感谢那些愿意帮助的人。

2 个答案:

答案 0 :(得分:0)

未终止的字符串文字错误可能是因为{/ 1}}之后的

;

代码很难阅读,因为你正在混合使用PHP和JavaScript。我建议将所有PHP移动到一个块中,然后仅输出PHP变量:+'</td>'; 以便清楚。

答案 1 :(得分:0)

你真的需要CodeIgniter的form_input助手吗?

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." />";
}

因为这只会返回<input name=$name class=$class/>
我想你可以把它转换成这个。

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>';