ページ全体で数え切れないほど使用してきた 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 値を組み合わせる必要があることを理解するための単純なケースだと確信しています。
いつものように、どんな助けも大歓迎です。
アラン。