通过jquery.html()将一组数据传递给javascript函数

passing set of data to javascript function through jquery.html()

本文关键字:函数 数据 javascript html jquery 通过 一组      更新时间:2023-09-26

我的代码中有两个函数-makeData和displayData-。

<script type="text/javascript">
    function makeData(){
        var myjson = {}; var myarray = [];
        for (var i = 0; i < 10; i++){ 
           myjson[i] = "json"+i; 
           myarray[i] = "array"+i;
        }
        //when i pass myjson[1] and myarray[1] value, it's work for me
        $("#mydiv").html("<input type='"button'" value='"display data'" 
              onclick=displayData('""+myjson[0]+"'",'""+myarray[0]+"'") />");
        /*but when i tried to pass the json and array object, i got problem here.
          displayData() function cannot read those objects*/
        $("#mydiv").html("<input type='"button'" value='"display data'" 
              onclick=displayData('""+myjson+"'",'""+myarray+"'") />");
    }
</script>
<input type="button" value="make some button" onclick="makeData()" />
<div id="mydiv"></div>
<div id="dataDisplay"></div>

如何将array/json对象传递给使用innerHTML编写的javascript函数???

注意:我的目的是将一组数据传递给javascript函数。

编辑:我觉得现在更清楚了。抱歉之前。。

您可以将对象或数组转换为字符串表示(JSON),将其写入DOM(例如,作为调用onclick的函数的参数)。

给我10分钟写一个更好的例子。它是不完美的(例如,索引看起来是"字符串"类型,即使实际上是"数字"),但它应该涵盖大多数情况。请注意,您无法使用以下示例转换函数或引用:

function convertObjectToString( obj )
{
    var stringRep = "{";
    for ( var index in obj)
    {       
        var cIndex;
        if ( typeof index == "number" ) // int index
            cIndex = index;    
        else // string index
            cIndex = "'"" + index + "'"";
        if ( typeof obj[index] == "object" )
            stringRep += cIndex + ":" + convertObjectToString( 
                            obj[index] ) + ","; // convert recursively
        else if ( typeof obj[index] == "number" )
            stringRep += cIndex + ":" + obj[index] + ",";
        else
            stringRep += cIndex + ":'"" + obj[index] + "'","; 
    }
    // remove trailing comma (if not empty)
    if ( stringRep.length > 1 )
        stringRep = stringRep.substr(0, stringRep.length - 1);
    stringRep += "}";
    return stringRep;
}

或者最好只使用JSON.stringify函数!https://developer.mozilla.org/En/Using_native_JSON/

我想我已经找到了问题的答案。这是修改后的代码:

function buatdata(){
    var myjson={};
    var myarray= [];
    for(var i = 0 ; i < 10 ; i++){
        myjson[i] = "json"+i;
        myarray[i] = "array"+i;
    }
    var arraystring = myarray.toString().replace(','g,"&#44;");
    var jsonstring = JSON.stringify(myjson).replace('"'g,"&quot;");
    /* i changed " to ' to wrap parameter that i passed in tampildata() function 
        and i convert those object to string first.*/
    $("#tombol").html("<input type='"button'" value='"display'" 
          onclick=tampildata('"+jsonstring+"','"+arraystring+"') />");
}
function tampildata(getjson,getarray){
    //i changed string that i passed back to object, so i get what i want.
    var myarray = getarray.split(',');
    var myjson = JSON.parse(getjson);
}

使用该函数,我传递数组和json对象。但我还是希望还有其他的方法可以用。因为我害怕如果我的数据集很大,它会减慢进程。