我想将文本元素(字符串)传递给on click函数:
document.getElementById("struct_list").innerHTML="<li onClick='ClickStructList("+text+");'><a href='#'>"+text;`
ClickStructList定义如下:
ClickStructList=function(text){
window.alert("click");
window.alert(text);
};
这不起作用,firefox调试告诉我:“C未定义”,C是文本的值。
感谢您的帮助
PS:我不想使用jquery
答案 0 :(得分:2)
尝试将函数定义为函数而非变量
function ClickStructList(text){
window.alert("click");
window.alert(text);
};
另外,当您定义onClick
回调时,您应该用引号将其包围
<li onClick='ClickStructList("My entered text");'>
所以在你的例子中:
.innerHTML="<li onClick='ClickStructList(\""+text+"\");'>
答案 1 :(得分:2)
尝试将您的JS代码更改为:
document.getElementById("struct_list").innerHTML="<li onClick='ClickStructList(\""+text+"\");'><a href='#'>"+text;
答案 2 :(得分:1)
您对ClickStructList的调用中缺少引号... 这有效:
CatBasket gCatBasket; // All cats in the house share the same basket (global)
class Cat {
Tail _tail; // The tail is part of the cat (member)
Human *_owner; // The cat remembers his owner for his whole life (member)
void meow() {
MeowSound sound; // The "meow" sound only exists while the cat is meowing. (local)
sound.setAmplitude(17.0f);
sound.setPurr(true);
sound.play();
}
static bool _beACat;
};
bool Cat::_beACat = true; // Everybody wants to be a cat (static)
答案 3 :(得分:0)
您忘记为字符串添加引号,因此JS会尝试将您的文本解析为代码。
至少你需要这样:
... "<li onClick='ClickStructList(\""+text+"\");'><a href='#'>" ...
甚至更好
... "<li onClick='ClickStructList("+ JSON.stringify(text) +");'><a href='#'>" ...