Javascript 动态创建按钮的onclick函数中的变量

Javascript 动态创建按钮的onclick函数中的变量,javascript,jquery,variables,button,dynamic,Javascript,Jquery,Variables,Button,Dynamic,Hy 基本上,我有许多动态生成的列表项,其中有一个按钮。当我将列表项前置到ul列表时,我可以访问一个变量,当我单击列表项中的按钮时,我希望传递该变量。但是,当我在下面显示的代码行中添加变量时,它会给我一个uncaughtreferenceerror:challenger未定义error。如何传递这些变量 JAVASCRIPT: window.GLOBAL_socket.on('challenged', function(data) { console.log("You have been

Hy

基本上,我有许多动态生成的列表项,其中有一个按钮。当我将列表项前置到ul列表时,我可以访问一个变量,当我单击列表项中的按钮时,我希望传递该变量。但是,当我在下面显示的代码行中添加变量时,它会给我一个
uncaughtreferenceerror:challenger未定义
error。如何传递这些变量

JAVASCRIPT:

window.GLOBAL_socket.on('challenged', function(data) {
    console.log("You have been challenged by the player " + data.challenger);
    var challenged = getUrlVars()['user'];
    var challenger = data.challenger;
    $("#challengesList").prepend("<li><div id='newChallenge'><p id='challenge_header'>You have been challenged by: </p><p id='challenge_challenger'>" + data.challenger + 
        "</p><input type='button' value='ACCEPT' id='challenge_accept' onclick='acceptChallenge(challenger)'></input><input type='button' value='DECLINE' " + 
        "id='challenge_decline' onclick='declineChallenge(this)'></div></li>");
});
window.GLOBAL\u socket.on('challected',函数(数据){
log(“你被玩家挑战”+data.challenger);
var=getUrlVars()['user'];
var challenger=data.challenger;
$(“#challengesList”).prepend(
  • 您受到的挑战:

    “+data.challenger+ “

  • ”; });
    onclick方法见第6行

    谢谢你的回复


    Zeno

    之所以没有定义challenger,是因为它是一个局部变量,当您实际通过单击触发函数时,它是不可全局访问的

    因此,不使用变量,只需将其实际值放在onclick中

    将代码更改为:

    $("#challengesList").prepend("<li><div id='newChallenge'><p id='challenge_header'>You have been challenged by: </p><p id='challenge_challenger'>" + data.challenger + 
            "</p><input type='button' value='ACCEPT' id='challenge_accept' onclick='acceptChallenge(\""+challenger+"\")'></input><input type='button' value='DECLINE' " + 
            "id='challenge_decline' onclick='declineChallenge(this)'></div></li>");
    
    $(“#challengesList”).prepend(
  • 您受到以下挑战:

    “+data.challenger+ “

  • ”;
    之所以没有定义challenger,是因为它是一个局部变量,当您实际通过单击触发函数时,它是不可全局访问的

    因此,不使用变量,只需将其实际值放在onclick中

    将代码更改为:

    $("#challengesList").prepend("<li><div id='newChallenge'><p id='challenge_header'>You have been challenged by: </p><p id='challenge_challenger'>" + data.challenger + 
            "</p><input type='button' value='ACCEPT' id='challenge_accept' onclick='acceptChallenge(\""+challenger+"\")'></input><input type='button' value='DECLINE' " + 
            "id='challenge_decline' onclick='declineChallenge(this)'></div></li>");
    
    $(“#challengesList”).prepend(
  • 您受到以下挑战:

    “+data.challenger+ “

  • ”;
    之所以没有定义challenger,是因为它是一个局部变量,当您实际通过单击触发函数时,它是不可全局访问的

    因此,不使用变量,只需将其实际值放在onclick中

    将代码更改为:

    $("#challengesList").prepend("<li><div id='newChallenge'><p id='challenge_header'>You have been challenged by: </p><p id='challenge_challenger'>" + data.challenger + 
            "</p><input type='button' value='ACCEPT' id='challenge_accept' onclick='acceptChallenge(\""+challenger+"\")'></input><input type='button' value='DECLINE' " + 
            "id='challenge_decline' onclick='declineChallenge(this)'></div></li>");
    
    $(“#challengesList”).prepend(
  • 您受到以下挑战:

    “+data.challenger+ “

  • ”;
    之所以没有定义challenger,是因为它是一个局部变量,当您实际通过单击触发函数时,它是不可全局访问的

    因此,不使用变量,只需将其实际值放在onclick中

    将代码更改为:

    $("#challengesList").prepend("<li><div id='newChallenge'><p id='challenge_header'>You have been challenged by: </p><p id='challenge_challenger'>" + data.challenger + 
            "</p><input type='button' value='ACCEPT' id='challenge_accept' onclick='acceptChallenge(\""+challenger+"\")'></input><input type='button' value='DECLINE' " + 
            "id='challenge_decline' onclick='declineChallenge(this)'></div></li>");
    
    $(“#challengesList”).prepend(
  • 您受到以下挑战:

    “+data.challenger+ “

  • ”;
    按照我在评论中提到的更改代码

    var challenged = [];
    var challenger = [];
    var counter = 0;
    
    window.GLOBAL_socket.on('challenged', function(data) {
        console.log("You have been challenged by the player " + data.challenger);
        counter++;
        challenged[counter] = getUrlVars()['user'];
        challenger[counter] = data.challenger;
    
        $("#challengesList").prepend("<li><div id='newChallenge'><p id='challenge_header'>You have been challenged by: </p><p id='challenge_challenger'>" 
            + data.challenger 
            + "</p><input type='button' value='ACCEPT' id='challenge_accept'"
    
            // change of code --> passing value directly into the function
            + " onclick='acceptChallenge(challenger["+counter+"]
    
            +")'></input><input type='button' value='DECLINE' " 
            + "id='challenge_decline' onclick='declineChallenge(this)'></div></li>");
    
    });
    
    var=[];
    var challenger=[];
    var计数器=0;
    window.GLOBAL_socket.on('challected',函数(数据){
    log(“你被玩家挑战”+data.challenger);
    计数器++;
    挑战[counter]=getUrlVars()['user'];
    challenger[计数器]=data.challenger;
    $(“#challengesList”).prepend(
  • 您受到的挑战:

    ) +data.challenger +“

  • ”; });

    我刚刚修改了代码,希望对你有用。让我知道

    按照我在评论中提到的更改代码

    var challenged = [];
    var challenger = [];
    var counter = 0;
    
    window.GLOBAL_socket.on('challenged', function(data) {
        console.log("You have been challenged by the player " + data.challenger);
        counter++;
        challenged[counter] = getUrlVars()['user'];
        challenger[counter] = data.challenger;
    
        $("#challengesList").prepend("<li><div id='newChallenge'><p id='challenge_header'>You have been challenged by: </p><p id='challenge_challenger'>" 
            + data.challenger 
            + "</p><input type='button' value='ACCEPT' id='challenge_accept'"
    
            // change of code --> passing value directly into the function
            + " onclick='acceptChallenge(challenger["+counter+"]
    
            +")'></input><input type='button' value='DECLINE' " 
            + "id='challenge_decline' onclick='declineChallenge(this)'></div></li>");
    
    });
    
    var=[];
    var challenger=[];
    var计数器=0;
    window.GLOBAL_socket.on('challected',函数(数据){
    log(“你被玩家挑战”+data.challenger);
    计数器++;
    挑战[counter]=getUrlVars()['user'];
    challenger[计数器]=data.challenger;
    $(“#challengesList”).prepend(
  • 您受到的挑战:

    ) +data.challenger +“

  • ”; });

    我刚刚修改了代码,希望对你有用。让我知道

    按照我在评论中提到的更改代码

    var challenged = [];
    var challenger = [];
    var counter = 0;
    
    window.GLOBAL_socket.on('challenged', function(data) {
        console.log("You have been challenged by the player " + data.challenger);
        counter++;
        challenged[counter] = getUrlVars()['user'];
        challenger[counter] = data.challenger;
    
        $("#challengesList").prepend("<li><div id='newChallenge'><p id='challenge_header'>You have been challenged by: </p><p id='challenge_challenger'>" 
            + data.challenger 
            + "</p><input type='button' value='ACCEPT' id='challenge_accept'"
    
            // change of code --> passing value directly into the function
            + " onclick='acceptChallenge(challenger["+counter+"]
    
            +")'></input><input type='button' value='DECLINE' " 
            + "id='challenge_decline' onclick='declineChallenge(this)'></div></li>");
    
    });
    
    var=[];
    var challenger=[];
    var计数器=0;
    window.GLOBAL_socket.on('challected',函数(数据){
    log(“你被玩家挑战”+data.challenger);
    计数器++;
    挑战[counter]=getUrlVars()['user'];
    challenger[计数器]=data.challenger;
    $(“#challengesList”).prepend(
  • 您受到的挑战:

    ) +data.challenger +“

  • ”; });

    我刚刚修改了代码,希望对你有用。让我知道

    按照我在评论中提到的更改代码

    var challenged = [];
    var challenger = [];
    var counter = 0;
    
    window.GLOBAL_socket.on('challenged', function(data) {
        console.log("You have been challenged by the player " + data.challenger);
        counter++;
        challenged[counter] = getUrlVars()['user'];
        challenger[counter] = data.challenger;
    
        $("#challengesList").prepend("<li><div id='newChallenge'><p id='challenge_header'>You have been challenged by: </p><p id='challenge_challenger'>" 
            + data.challenger 
            + "</p><input type='button' value='ACCEPT' id='challenge_accept'"
    
            // change of code --> passing value directly into the function
            + " onclick='acceptChallenge(challenger["+counter+"]
    
            +")'></input><input type='button' value='DECLINE' " 
            + "id='challenge_decline' onclick='declineChallenge(this)'></div></li>");
    
    });
    
    var=[];
    var challenger=[];
    var计数器=0;
    window.GLOBAL_socket.on('challected',函数(数据){
    log(“你被玩家挑战”+data.challenger);
    计数器++;
    挑战[counter]=getUrlVars()['user'];
    challenger[计数器]=data.challenger;
    $(“#challengesList”).prepend(
  • 您受到的挑战:

    ) +data.challenger +“

  • ”; });


    我刚刚修改了代码,希望对你有用。让我知道问题是什么,你改变了什么,为什么它有助于解决问题。现在它给我以下错误:“未捕获引用错误:未定义admin”,其中admin是挑战者VALUEOPS的值,你想将其作为字符串传递。我更新了我的答案(注意变量周围的单引号和双引号)。@zenodhaene如果您发布
    acceptChallenge()
    function@banana很有趣,acceptChallenge方法是空的。只有函数名和1参数。似乎错误发生在我在描述中写下的代码中。一些关于问题所在的描述,