2011-06-01 95 views
0

这里是我的代码:如何让表格ID唯一在foreach

<?php foreach ($users as $user) 
{ 
    //some php code here to define variables 
    <a href="<?php echo ADDRESS; ?>messageSent.php?id=<?php echo $id_to; ?>" class="charcoal_link" style="line-height: 20px;" onclick="showMessageArea(this); return false;" > 
     <?php echo $uniqueCode1;?><span class="pink_text"><?php echo $uniqueCode2;?></span><?php echo $uniqueCode3;?> 
    </a>  
    <form id="message_area_<?php echo $id_to; ?>" style="display:none" method="post" action="<?php echo ADDRESS; ?>messageSent.php?id=<?php echo $id_to; ?>"> 
     <textarea name="message" rows="10" cols="20"></textarea> 
     <input name="Submit" type="submit" value="Send"></input> 
     <input type='hidden' name='mid' id='message_id' value=""></input> 
    </form> 
<?php 
    } 
?> 

那么我:

<script type="text/JavaScript"> 
function showMessageArea(link) 
{ 
    document.getElementById('message_id').value = this.id; 
    var message_area = document.getElementById('message_area_'+this.id); 
    message_area.parentNode.removeChild(message_area); 
    link.parentNode.insertBefore(message_area, link.nextSibling); 
    message_area.style.display="block"; 
} 

我pagesource显示:请注意,形式ID是独特

<a href="http://www-rainbowcode-mobi/messageSent.php?id=36" class="charcoal_link" style="line-height: 20px;" onclick="showMessageArea(this); return false;" > 
    KUZELJA<span class="pink_text">000</span>RC 
</a>  
<form id="message_area_36" style="display:none" method="post" action="http://www-rainbowcode-mobi/messageSent.php?id=36"> 
    <textarea name="message" rows="10" cols="20"></textarea> 
    <input name="Submit" type="submit" value="Send"></input> 
    <input type='hidden' name='mid' id='message_id' value=""></input> 
</form> 
<a href="http://www-rainbowcode-mobi/messageSent.php?id=38" class="charcoal_link" style="line-height: 20px;" onclick="showMessageArea(this); return false;" > 
    ALANZIM<span class="pink_text">000</span>RC 
</a>  
<form id="message_area_38" style="display:none" method="post" action="http://www-rainbowcode-mobi/messageSent.php?id=38"> 
    <textarea name="message" rows="10" cols="20"></textarea> 
    <input name="Submit" type="submit" value="Send"></input> 
    <input type='hidden' name='mid' id='message_id' value=""></input> 
</form> 

现在的问题是:在我的JS this.id未定义????? THUS不显示我的textarea和sumbit按钮 如何获取var message_area = document.getElementById('message_area _'+ this.id)unique? 我也尝试split.link(“=”)[1]获得id并连接它与message_area_ ,但它不起作用 链接也是唯一的,http://www-rainbowcode-mobi/messageSent.php?id=36其中id将是唯一代码链接的id我点击

请问我需要帮助吗? 谢谢

回答

0

有两种选择:

1)添加id="<?php echo $to_id; ?>"到您的<a>标签,或

2)更好地通过ID作为JavaScript函数的参数:

<a ... onclick="showMessageArea(this, '<?php echo $to_id; ?>'); return false;"> 

,然后你的JavaScript函数看起来应该是需要在进一步DOM操作这个

function showMessageArea(link, id) 
{ 
    document.getElementById('message_id').value = id; 
    var message_area = document.getElementById('message_area_'+id); 
    .... 
} 
+0

谢谢即时消息得到正确的ID,但仍然我的var message_area不是唯一的,因此我的实际消息区域和提交按钮不显示 – 2011-06-01 12:43:24

+0

嗯,我不明白你为什么不移动那个窗体'foreach'循环 - 它现在引起你的问题,因为你现在有了非唯一的id message_id的输入。请将表单移到循环之外。并删除'?id = <?php echo $ id_to; ?>''从表单动作 - 你已经在使用和设置''这是做同样的事情(但只能以正确的方式) – mkilmanas 2011-06-01 18:24:35

0

尝试在PHP代码更改此:

onclick="showMessageArea('<?php echo $id_to; ?>'); return false;" 

然后你就可以得到消息面:

var message_area = document.getElementById('message_area_'+link); 
+0

原来'this' /'link'参数,所以你不能轻易忽视它。 – mkilmanas 2011-06-01 12:17:45