我想传递一些json对象的元素,如objson.post.mypost [i] .idpost作为javascript函数中的参数 这是我的剧本:
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp1=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp1=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp1.onreadystatechange=function()
{
if (xmlhttp1.readyState==4 && xmlhttp1.status==200)
{
var txttmp2 = xmlhttp1.responseText;
var obj2 = $.parseJSON(txttmp2);
var text1= document.getElementById("tabs-Mil");
var objln=obj2.post.mypost.length;
//alert(objln+"");
for(var counter=0;counter<objln;counter++)
{
text1.innerHTML+=" '"+obj2.post.mypost[counter].status+"' @ <a href='#'>"+obj2.post.mypost[counter].namalokasi+"</a> on "+obj2.post.mypost[counter].tanggal+"<br/><a href='#' onclick='addcomment("+obj2.post.mypost[counter].idpost+","+localStorage.loggeduser+")'>comment</a><hr width='80%' align='left'><br/>";
text1.innerHTML+="<span id='comments' name='comments'></span>";
}
}
}
xmlhttp1.open("GET","http://localhost:280/finaltask/forjson.php?tmpid="+iduser+"&proses=showpost",true);
xmlhttp1.send();
function addcomment(idcheckin,iduser)
{
$("#formcomment").show();
var detpost=document.getElementById("detail-post");
alert(idcheckin+"/"+iduser);
}
我已经传递了json对象元素: 的onclick = 'addcomment( “+ obj2.post.mypost [计数器] .idpost +”, “+ localStorage.loggeduser +”)'
但是当函数执行时(函数addcomment(idcheckin,iduser)),就说“idcheckin”是'undefined'.....
任何人都可以帮助我吗?
答案 0 :(得分:0)
不要通过连接字符串来附加复杂的事件处理程序,使用像jQuery这样的库:
$("<a></a>").text("Hello").click(function () {
addComment(obj.post.mypost[counter].idpost, ...);
})
答案 1 :(得分:0)
确保您的返回结果是预期的。您应该检查idpost是否有效,考虑在循环开始时添加日志记录。
for(var counter=0;counter<objln;counter++)
{
console.log('loop results ' + counter + ': ' + JSON.stringify(obj2.post.mypost[counter])); // confirm output of selected element
alert('idpost: ' + obj2.post.mypost[counter].idpost); // Check result
text1.innerHTML+=" '"+obj2.post.mypost[counter].status+"' @ <a href='#'>"+obj2.post.mypost[counter].namalokasi+"</a> on "+obj2.post.mypost[counter].tanggal+"<br/><a href='#' onclick='addcomment("+obj2.post.mypost[counter].idpost+","+localStorage.loggeduser+")'>comment</a><hr width='80%' align='left'><br/>";
还考虑改变:
addcomment("+obj2.post.mypost[counter].idpost+","+localStorage.loggeduser+")
为:
addcomment(\""+obj2.post.mypost[counter].idpost+"\",\""+localStorage.loggeduser+"\")