2011-06-01 42 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