2011-09-05 38 views
0

我想追加一些数字到我试图在页面上动态添加的元素的类名称。我要追加的数字是通过获取页​​面上现有目标元素的数量,并通过jquery函数长度获取。如何在PHP代码块中使用Javascript变量?

这里是我的代码:

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

      }); 

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

+0

什么问题?你会得到什么错误? –

+0

我得到这个:未终止的字符串文字错误。 – Atasha

+0

您是否意识到您的所有PHP代码都运行在Web服务器上,并且所有JavaScript都在Web浏览器中运行,因此您的PHP无法访问任何JavaScript变量。 – nnnnnn

回答

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

谢谢您的回应Ace。我已经按照你的建议,我实现了我的目标连接类名称上的id。我以为我正在使用框架,因此我不得不使用CI的form_helper。 – Atasha

+0

啊,是的。这是使用助手的理想选择。但是,如果它不符合您的需求,您可以跳过它们并寻求更简单的解决方案。 :) – ace

0

的未结束的字符串错误可能是因为;

+'</td>';  

的代码非常难读,因为你混合PHP和JavaScript。我建议将所有的PHP移动到一个块中,然后输出只有PHP变量:<?php echo $data; ?>为清晰起见。

+0

我已经删除了;在+之后,但仍未终止的字符串文字错误仍然存​​在。这是我有一个困难的时间,因为我会根据页面中存在的元素数量来分配数字,并且我正在使用jquery进行计数,因为我不知道计算元素数量的方法特定选择器。 – Atasha