通过jquery.html()将一组数据传递给javascript函数
passing set of data to javascript function through jquery.html()
我的代码中有两个函数-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,",");
var jsonstring = JSON.stringify(myjson).replace('"'g,""");
/* 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对象。但我还是希望还有其他的方法可以用。因为我害怕如果我的数据集很大,它会减慢进程。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 如何将firebase数据传递到函数中
- 为什么不'我们在javascript中使用函数参数的数据类型
- Meteor Router数据函数被调用两次
- onChange 函数更改表中显示的数据
- 如何降低此函数的复杂性,该函数根据数据类型进行回调
- 函数jquery.html()不提供数据属性集值
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- 是否保证传递给 always 函数的回调将在函数(数据)回调完成其工作后调用
- get 函数数据报告空信息
- JavaScript函数数据处理
- 我想将函数数据发送到使用 javascript 中的按钮设计的边框中
- fnGetPosition不是一个函数-数据表
- 函数外的Javascript函数数据
- 使用函数数据动态加载onclick函数
- 如何将函数索引和函数数据统一为一个新函数
- 使用美元.Post方法将函数(数据)值返回给变量
- 没有函数数据绑定不能工作
- Jquery.ajax,成功:函数(数据)没有返回一个普通对象
- 未捕获的类型错误:未定义不是函数-数据表