JS动态生成HTML时函数参数为null的解决方案
作者:拾光时间:2026-10-27 18:02:57浏览:454
本文解决在Ajax动态生成HTML时,通过onclick调用JS函数导致参数为null的问题。原代码在拼接href属性时未对字符串参数添加单引号,导致浏览器解析错误。修复方法是在拼接字符串时显式添加单引号,确保参数作为字符串传递。
动态HTML中函数参数为null的修复方法
页面需要展示通过Ajax动态获取的数据。
具体实现代码如下:
success:function(data){
var arr = data.split('_');
var numArr = arr[0].split(",");
var numStr = "";
if(numArr.length==undefined || numArr.length==0){
$("#phonenolist").html('对不起,没有查询到相应的号码!');
}else{
for(var i=0;i<numArr.length;i++){
numStr += "<li><a id='n_"+i+"' href=\"javascript:choose_mobile(",
+ numArr[i].toString()+",n_"+i+");\" class='buy'>"
+ numArr[i].toString().substring(0, 3)
+ "<span class='org'> ",
+ numArr[i].toString().substring(3, 7) + " ",
+ numArr[i].toString().substring(7, 11)
+ "</span></a></li>";
}
$("#phonenolist").html(numStr);
}
index = arr[1];
total = arr[2];
$("#curr").html(' 第'+index+'页,共'+total+'页 ');
}
function choose_mobile(num,id){
alert(num+" "+id);
$("#mobile").val(num);
$("#xhmobile").html("<h3><b>"+num+"</b></h3>");
$("#"+id).addClass("buy").siblings().removeClass("buy");
} 在JS中,参数传递形式大致为choose_mobile(号码,对象id)。但在执行JS时,发现只弹出了号码,而id参数为null,这令人困惑。后经请教,发现需在第9、10行代码中,为方法的两个参数添加单引号。
修正后的代码如下:
numStr += "<li><a id='n_"+i+"' href=\"javascript:choose_mobile('",
+ numArr[i].toString()+"','n_"+i+"');\" class='buy'>"问题得以解决。此前对此感到纠结,因为JS对字符串的解析与对数字串的解析存在差异,区分较为严格。
作者最新文章
JS处理含Emoji或中文的字符串转数组乱码问题
2026-11-05 16:12:28
JS怎么使用展开运算符合并对象
2026-11-05 14:42:18
ES6+环境下判断JS对象为空的简洁写法
2026-11-05 12:12:23
怎么通过replacer函数自定义JS中JSON的格式化输出
2026-11-05 11:19:44
JS正则表达式基础:字面量与RegExp构造函数的区别及常用元字符
2026-11-05 11:16:58
