我有一个 innerHTML 声明如下:
newdiv.innerHTML = '<a href=\'#\' onclick=genGroups('+userid+',\''+coursename+'\','+url+')>'+coursename+'</a>';
我无法通过 onclick 发送任何 url 和/或字符串变量(例如,其中包含空格的课程名称)。发生与空格(字符串的情况)和url(参数后需要a')'相关的错误。任何的想法?
我有一个 innerHTML 声明如下:
newdiv.innerHTML = '<a href=\'#\' onclick=genGroups('+userid+',\''+coursename+'\','+url+')>'+coursename+'</a>';
我无法通过 onclick 发送任何 url 和/或字符串变量(例如,其中包含空格的课程名称)。发生与空格(字符串的情况)和url(参数后需要a')'相关的错误。任何的想法?
使用函数式方法添加点击处理程序,而不是内联处理程序:
newdiv.innerHTML = "<a href='#'>"+coursename+"</a>";
var a = newdiv.getElementsByTagName('a')[0];
a.addEventListener('click', function() { genGroups(userid, coursename, url); });
此外,请注意使用不同形式的引号,因此您不必转义嵌入的引号。
您可以使用 jQuery 轻松做到这一点,尝试类似http://jsfiddle.net/gianlucaguarini/WSzCh/的东西,这对您的应用程序来说更干净、更灵活。
var your_user_id = 1,
your_course_name = 'whatever',
your_url = 'nice url';
var genGroups = function(params){
alert(params.userId);
alert(params.coursename);
alert(params.url);
};
// create a new empty link
var $myDiv = $('.myDiv'),
$newLink = $('<a>');
// to store your meta properties as html data
$newLink.data({
'userId':your_user_id,
'coursename':your_course_name,
'url':your_url
}).text(your_course_name);
// append the new link
$myDiv.append($newLink);
// bind the click event anywhere in your code
$myDiv .on( 'click','a', function() {
var linkData = $(this).data();
genGroups( linkData );
});
我认为网址也应该被引用......
并且 onclick="..." (带双引号)会很好
newdiv.innerHTML = '<a href=\'#\' onclick="genGroups('+userid+',\''+coursename+'\',\''+url+'\')">'+coursename+'</a>';
你的报价有问题。试试这个:
newdiv.innerHTML = '<a href="#" onclick="genGroups('+userid+',\''+coursename+'\',\''+url+'\')">'+coursename+'</a>';
我建议你使用不显眼的 JS。您可以将用户 ID、课程名称和 url 作为数据存储在 中a
,并绑定一个点击事件。您甚至可以从锚点获取课程名称。