0

objson.post.mypost[i].idpost のような json オブジェクトのいくつかの要素を 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>&nbsp;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[counter].idpost+","+localStorage.loggeduser+")'

しかし、関数が実行されたとき (関数 addcomment(idcheckin,iduser))、「idcheckin」は「未定義」だったと言われています.....

誰でも私を助けることができますか?

4

2 に答える 2

0

文字列を連結して複雑なイベント ハンドラーをアタッチせず、jQuery などのライブラリを使用します。

$("<a></a>").text("Hello").click(function () {
    addComment(obj.post.mypost[counter].idpost, ...);
})
于 2012-06-08T02:35:29.567 に答える
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>&nbsp;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+"\")
于 2012-06-08T03:01:57.003 に答える