我正在努力学习一些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值的案例。
像往常一样,我们非常感谢任何帮助。
艾伦。
答案 0 :(得分:1)
而不是使用id="todoitemwr(2)"
写id="todoitemwr_2"
。
那是因为ID属性中不允许使用大括号。
代码将成为:
document.getElementById('todoitemwr(' + str + ')')