2

これがわからないようです。Javascriptを使用して入力値を選択しようとしています。問題は、フォームが前夜を取得するphp配列を介してループされていることです。これにより、すべてのフォームが同じ名前になり、入力に名前が付けられます。javascriptでは、最初のフォームの値のみを取得できます。でフォームを配列に入れてみまし[]たが、取得できません。助けてください。

    $find = mysql_query("
       SELECT `name`, `desc`, LEFT(`desc`, 80),`price`, `page`, `id`
       FROM `bang` 
       ORDER BY id ASC LIMIT 2 ") or die(mysql_error());

       while($resultt= mysql_fetch_array($find)){
          echo '<form id="linkcenter" action="">';
          echo '<input type="hidden" value="'.$resultt['id'].'" id="linkcenterr" name="linkcenterr"';
          echo '<input type="button" name="butn" value="Send" onClick="loadInfoo()">';
          echo '</select>';
          echo '</form>';
    }

別のファイルのJavascriptとjQuery:

    function loadInfoo() {  
       var id = document.getElementById('linkcenterr').value;
       //ajax and more java bellow that i know is working..
    } 

私がjqueryを使用しているのは、ボックスをアニメーション化することだけです。次に、この入力はjavascriptを通過し、sqlqueryを実行してデータベースからすべてのデータをエコーするphpファイルに送信されます。

他のすべてのコードが機能していることはわかっていますが、問題は、JavaScriptがクリックされたときにそれぞれの値を取得できるように、これらのフォームを配列にフォーマットする方法がわからないことです。

4

3 に答える 3

2

HTML要素のid属性は、ドキュメントに固有である必要があります。id='linkcenterr'すべてのフォーム入力とタグに同じものを使用していますが<form>、これは無効です。ほとんどのブラウザは最初のものだけを選択します。

すべてのノードに一意のIDを指定する必要があります。

while($resultt= mysql_fetch_array($find)){
    // Use $resultt['id'] in the node id
    echo '<form id="linkcenter' . $resultt['id'] . '" action="" class="linkcenter-form">';
    // Use $resultt['id']  with another string in the node id
    // Don't forget to close the tag > here.
    echo '<input type="hidden" value="'.$resultt['id'].'" id="input_linkcenterr' . $resultt['id'] . '" name="linkcenterr" class="linkcenterr-input">' ;
    echo '<input type="button" name="butn" value="Send" onClick="loadInfoo()">';
    echo '</select>';
    echo '</form>';
}

document.getElementById()JavaScriptでは、を介して個別に、またはを介してグループでそれらをターゲットにする必要がありますdocument.getElementsByTagName()

タグ付けしたとおりにjQueryを使用している場合は、次の方法ですべてのフォームをターゲットにできます。

// Get all by class
var forms = $('form.linkcenter-form');

// Get all the inputs by class
var inputs = $('input.linkcenterr-input');

関数loadInfoo()では、をパラメーターとして渡す必要が$resultt['id']あります。これを使用して、idで要素をターゲットにすることができます。

 // Pass the id into the function
 echo '<input type="button" name="butn" value="Send" onClick="loadInfoo(' . $resultt['id'] . ')">';

そして、セレクターでidパラメーターを使用する関数を定義します。

function loadInfoo(idVal) {  
    // Concatenate the id param with onto linkcenterr:
    var id = document.getElementById('input_linkcenterr' + idVal).value;

    // Or the jQuery version:
    var id = $('#input_linkcenterr' + idVal).val();
} 
于 2012-11-07T00:43:01.020 に答える
0

ループにカウンターを実装し、次のようにカウンター値をIDに追加するだけです。

$i=0;
while($resultt= mysql_fetch_array($find)){
    echo '<form id="linkcenter'.$i.'" action="">';
    echo '<input type="hidden" value="'.$resultt['id'].'" id="linkcenterr'.$i.'" name="linkcenterr"';
    echo '<input type="button" name="butn" value="Send" onClick="loadInfoo('.$i.')">';
    echo '</select>';
    echo '</form>';
    $i++;
}

次に、JavaScriptを調整して、渡されたパラメーターに基づいて値を取得します

function loadInfoo(index) {  
var id = document.getElementById('linkcenterr'+index).value;
//ajax and more java bellow that i know is working..
} 
于 2012-11-07T00:43:48.617 に答える
0

属性を指定し<form>classそれを使用してフォームを取得します。例えば

HTML:

<form class="my_forms">
...

JQuery:

var forms = $(".my_forms");
于 2012-11-07T00:44:43.257 に答える