2013-08-07 188 views
1

我创建锚标记动态像传递参数

for (var i = 0; i < json.length; i++) 
{ 
     <td><a href='#' id=" + json[i].id + " onclick=getId('" + json[i].id + "','"+ json[i].text +"')>" + json[i].text + " </a></td> 
} 

,并在onclick功能我定义了诸如

function getId(ID,text) 
{ 
     console.log(ID); 
     console.log(text); 
} 

在这种情况下onclick如果文本没有按价值不包含任何空格或单词之间的空白,我可以在控制台中获取文本值, 大小写如果文本包含任何空格,则显示错误,如Unexpected token ILLEGAL

+0

你可以发布一些完成/生成的锚标签的样子吗?你可能有什么东西在破坏你的语法 – thmshd

+0

有可能你的文本值可能有一个尾随的不可见字符或空格而不是空格,它们就是这些字符。这将有助于了解JSON的来源以及是否有任何字符串检查完成。看到这个http://stackoverflow.com/questions/12719859/syntaxerror-unexpected-token-illegal – Calvin

回答

1

<a href='#' id=" + json[i].id + " onclick=getId('" + json[i].id + "','"+ json[i].text +"')>" + json[i].text + " </a>

以上代码可能会奏效,但恕我直言它不是好的做法。

试试这个,我prefere这种方式和更清洁。

var a = document.createElement('a'); 
a.setAttribute('id',json[i].id); 
a.setAttribute('href',"#"); 
a.innerHTML = json[i].text; 
a.onclick = function(e) { 
    getId(json[i].id, json[i].text); 
    e = e || window.event; 
    e.cancelBubble = true; 
    if (e.stopPropagation) { 
     e.stopPropagation(); 
    } 
    return false; 
};