【求助】Nodejs JS问题Uncaught ReferenceError:XXXX is not defined

【求助】Nodejs JS问题Uncaught ReferenceError:XXXX is not defined

JS问题 <span id="${role.userid}"><input type=“checkbox” value="${role.userid}" checked=“checked” onclick=“removeRole(${listRole.roleId},${role.userid},${role.username});”/>${role.username}</span>

function addRole(roleId,userid,username){ $("#"+userid).remove();//alert($("#"+userid).val()); $("#fenpeirenyuan").append(’<span id="’+userid+’"><input type=“checkbox” value="’+userid+’" checked=“checked” onclick=“removeRole(’+roleId+’,’+userid+’);”/>’+userid+’</span>’); }

为啥添加了 usernamen 浏览器就会提示 提示 Uncaught ReferenceError:XXXX is not defined

XXXX为${role.username} 的传值

不加${role.username} username 可用


3 回复

根据你提供的信息,问题可能出在模板字符串的使用上。在JavaScript中,模板字符串通常使用反引号(`)来定义,而不是使用中文引号或双引号。另外,HTML属性值应该使用双引号或单引号包围。

以下是一个修正后的示例代码:

HTML 部分

<span id="${role.userid}">
    <input 
        type="checkbox" 
        value="${role.userid}" 
        checked="checked" 
        onclick="removeRole(${listRole.roleId},${role.userid},`${role.username}`);"
    />
    ${role.username}
</span>

JavaScript 部分

确保你的 removeRole 函数已经定义并且可以访问 role.username 参数。以下是修改后的 addRole 函数示例:

function addRole(roleId, userid, username) {
    $("#" + userid).remove();
    $("#fenpeirenyuan").append(
        `<span id="${userid}">
            <input 
                type="checkbox" 
                value="${userid}" 
                checked="checked" 
                onclick="removeRole(${roleId},${userid},`${username}`);"
            />${username}
         </span>`
    );
}

// 确保 removeRole 函数已定义
function removeRole(roleId, userId, username) {
    console.log(`Removing role for user ${userId} with name ${username}`);
    // 在这里实现你的逻辑
}

解释

  1. 模板字符串:在JavaScript中,模板字符串使用反引号()定义,并且可以在其中嵌入变量,使用${variable}` 语法。
  2. HTML 属性:确保HTML属性值使用双引号或单引号包围。
  3. 函数调用:确保在 onclick 中传递的参数正确引用了 role.username

通过以上修改,你应该能够避免 Uncaught ReferenceError: XXXX is not defined 错误,并且 removeRole 函数能够正确接收并处理 role.username 参数。


已解决,虽然是传递的值,但是在函数传参的时候也要加 引号

从你的描述来看,问题出在 ${role.username} 的使用上。错误提示 Uncaught ReferenceError: XXXX is not defined 表明某个变量未被定义。这通常是由于模板字符串中的引号使用不正确或变量传递过程中出现了问题。

在你的代码中,问题可能是由于引号类型不一致导致的。你使用的是中文引号(如 “ 和 ”),而正确的应该是英文引号(" 和 ')。

示例代码

<span id="${role.userid}">
    <input type="checkbox" value="${role.userid}" checked="checked" 
           onclick="removeRole(${listRole.roleId},${role.userid},'${role.username}');"/>
    ${role.username}
</span>

<script>
function removeRole(roleId, userId, username) {
    // 确保这里能够正确处理 username 参数
    console.log(`Removing role for user ${userId} with username ${username}`);
    
    $("#"+userId).remove();
    $("#fenpeirenyuan").append(`<span id="${userId}">
        <input type="checkbox" value="${userId}" checked="checked" 
               onclick="removeRole(${roleId},${userId}, '${username}');"/>
        ${username}
    </span>`);
}

// 示例调用
// removeRole(1, 'user1', 'User One');
</script>

解释

  1. 引号一致性:确保所有的字符串引号都是英文的双引号或单引号。
  2. 函数参数传递:确保在调用 removeRole 函数时,传递给它的参数是正确的,并且包含了所有必要的信息。
  3. HTML 结构:确保 HTML 中的属性值也使用英文引号包裹。

通过这些调整,你应该可以解决 Uncaught ReferenceError 错误。如果问题仍然存在,请检查其他可能的拼写错误或逻辑问题。

回到顶部