2

ページ全体で数え切れないほど使用してきた JavaScript コードに苦労しています。私が抱えている問題は、フォーム要素 id の一部と、ページの他の場所で定義された文字列変数を連結して、ajax 呼び出しを動的にすることです。要素が以下のようにハードコードされている場合に完全に機能する次のコードを使用しています(コード化されたアイテムに対してのみ機能し、動的に機能しないため、テスト後はうまくいきません)

<script type="text/javascript">
function edttodo(str)
{
if (str=="")
{
document.getElementById("todoitemwr").innerHTML="";
return;
} 
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("todoitemwr(2)").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","todo/edt_todo.php?q="+str,true);
xmlhttp.send();
}
</script>

したがって、コードの動的な側面に対する私のニーズが何であるかを理解しています。次のようなmysqlクエリを実行しています。

<?php 
            //Get Current To-Do Items

            //select database
            mysql_select_db("jbsrint", $con);
            //query users_dash_user
            $result1 = mysql_query("SELECT * FROM todo WHERE todo_user_id_fk= '".$_SESSION['user_id']."' AND todo_item_status='1'");

            while($row1 = mysql_fetch_array($result1))
            {                               
            echo"<div class=\"todoitemwr\" name=\"todoitemwr(". $row1['todo_id'] .")\" ID=\"todoitemwr(". $row1['todo_id'] .")\"><span class=\"todoitem\">" . $row1['todo_item'] . "</span><span class=\"rmv\" onclick=\"rmvtodo(". $row1['todo_id'] .")\" onmouseover=\"className='rmvon';\" onmouseout=\"className='rmv';\">X</span><img src=\"images/edit.png\" class=\"edt\" onclick=\"edttodo(". $row1['todo_id'] .")\"></img></div>";
            }
            ?>
            </div>

ご覧のとおり、div id は、取得された情報の id に基づいて動的に命名されます。上記の私の ajax コードの使用は、その場で取得されたテキストを編集できるようにすることであり、一度修正/変更すると、再送信してそのレコードを更新できます。

これは、JavaScript が document.getElementById("todoitemwr(2)") 部分で text と str 値を組み合わせる必要があることを理解するための単純なケースだと確信しています。

いつものように、どんな助けも大歓迎です。

アラン。

4

1 に答える 1

2

id="todoitemwr(2)"writeを使用する代わりにid="todoitemwr_2"

これは、ID属性で中括弧が許可されていないためです。

コードは次のようになります。

document.getElementById('todoitemwr(' + str + ')')
于 2012-05-16T10:36:00.773 に答える