2012-03-28 13 views
1

著者名をクリックする必要があるいくつかの項目に対してPHP foreachループで呼び出されたonclickイベントがあります。 1つの名前しか生成されていないので、各HTML要素に一意のIDが必要です。私は既に変数に$objkeyを持っていますので、私はそれをidに追加しました。JavaScript関数のユニークIDの変数

<?php 
//This is the item that appears in the loop. 
//Currently, clicking on each one that is generated only generates the first author name 
//The correct author as passed by PHP displays in the loop. 
//$closest is the value of the author's name. 
echo 'Click name to add <span><button id="closest' . $objkey . '" onClick="setAuthor()">' . $closest . '</button></span><br />'; 
?> 

私はprint_r('$objkey);を実行しましたが、カウンタの適切な値が渡されています。

このボタン要素$closestの値を入力フィールドに渡したいとします。

<?php 
echo '<input id="author_name' . $objkey . '" type="text" name="author_name' . $objkey . '" value="' . $author . '" />'; 
?> 

:私は、両方の入力のidとname要素(それが助けかどうかわからない)(:入力フィールドに値を取得する必要が著者ごとにありUPDATE)に変数を追加しています私はこだわっているどこの関数である:各ループされた項目は明確な名前を生成するよう

<script type="text/javascript">function setAuthor() { 
var author = document.getElementById("closest").innerHTML; 
window.alert(author); 
document.forms["myform"].elements["author_name"].value = author; }</script> 

はどのようにユニークなIDの関数内の変数を作成するのですか?それを行うには

+0

コードにループがありますか? –

+0

'nearest1'、' nearest2'などを生成していますが、 'nearest'を探しています –

+0

右に、関数に" nearest1、closest2 "を探す方法を書いていません – mattrweaver

答えて

2

一つの方法は、SETAUTHOR関数にthisを渡すことです。このアプローチでは

<?php 
//This is the item that appears in the loop. 
//Currently, clicking on each one that is generated only generates the first author name 
//The correct author as passed by PHP displays in the loop. 
//$closest is the value of the author's name. 
echo "Click name to add <button id='closest_{$objkey}' onClick='setAuthor(this)'>{$closest}</button><br/>"; 
?> 

、あなたはsetAuthor内の要素にアクセスすることができます。

<script type="text/javascript"> 
function setAuthor(el) { 
    var author = el.innerHTML, 
     id = el.id.replace(/^closest_/, ''); 
    if (console) { 
     console.log(author); 
    } 
    document.forms["myform"].elements["author_name_" + id].value = author; 
} 
</script> 

ただし、「shouldn onclickをインラインおよび各要素に設定します。イベント登録機能を使用する必要があります。

+0

私は@outisの編集を見逃しました。ありがとうございます。 IDが渡されているのがわかりましたが、著者の値が入力フィールドに到達していません。入力フィールドのidを変更する必要がありますか?のように: ' ';' – mattrweaver

+0

$ objkeyを中括弧で囲み、次のように置き換えます。 'id =" author_name_ '。$ objkey。' "type =" text "name =" author_name "value =" '。$ author。' "/> ';' これにより、ファーストネームは関連する入力フィールドに保存されますが、他の名前はクリックされても入力されません。近くなってる。 – mattrweaver

+0

ユーレカ!フォーム要素もユニークである必要がありました。私はフォームIDの入力要素と同じアプローチをとった: echo '

'; 上記のコードでidが生成されています。 'document.forms [" myform _ "+ id] .elements [" auth _ "+ id] .value = author;' すべてのヘルプありがとう – mattrweaver

関連する問題