将文本传递给onclick函数

时间:2015-07-01 07:11:30

标签: javascript

我想将文本元素(字符串)传递给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

4 个答案:

答案 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='#'>" ...