js-编码笔记-Uncaught ReferenceError: xxxx is not defined at HTMLSpanElement.onclick

本文探讨了JavaScript中处理字符串参数时的常见错误——未进行转义处理导致的引用错误,并详细解释了如何通过字符串转义来避免此类问题。文章通过具体代码示例,展示了在函数参数传递中对字符串正确使用转义字符的重要性。
部署运行你感兴趣的模型镜像

1.代码

变更前 

function rateRenderer(value, cellmeta, record, rowIndex, columnIndex,
                      store) {
    ..
    var edit = '<span onclick="openRate(' + name1 + ',' + name2+ ')">' + record.get("rateCoverage") + '</span>';
    return edit;
}

变更后 

function rateRenderer(value, cellmeta, record, rowIndex, columnIndex,
                      store) {
    ..
    var edit = '<span onclick="openRate(' + name1 + ',\'' + name2+ '\')">' + record.get("rateCoverage") + '</span>';
    return edit;
}

2.处理

nam2的位置以前是数字,没有问题,后台变成字符的时候,就报错了。

Uncaught ReferenceError: xxxx is not defined at HTMLSpanElement.onclick

做变更后


问题:' + name2+ '

修改后:\'' + name2+ '\'

3.原因

JS函数传递字符串参数,如果没有转义处理,在接收的时候无法正确的接收字符串。

 

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

当出现 `Uncaught ReferenceError: editlottery is not defined at HTMLButtonElement.onclick` 错误时,意味着在使用 `onclick` 属性调用 `editlottery` 方法时,该方法未被正确定义。可以从以下几个方面解决: ### 检查函数定义位置与作用域 要保证 `editlottery` 函数定义在全局作用域内,或者在调用之前已被定义。如果函数定义在某个特定的作用域(如 jQuery 的 `$(function() { ... })` 内),则外部无法访问。例如: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="js/jquery-1.8.3.js"></script> <script type="text/javascript"> // 正确的全局定义方式 function editlottery() { // 函数逻辑 alert('编辑抽奖'); } </script> </head> <body> <button type="button" onclick="editlottery()">编辑</button> </body> </html> ``` 如果之前函数定义在 `$(function() { ... })` 内,需将其移到该作用域之外,以确保全局可访问,就像引用[1]中 `getFormData` 函数在 `$(function() { ... })` 内定义,导致外部调用报错的情况,应将其移到全局作用域。 ### 检查拼写和大小写 仔细检查函数名 `editlottery` 的拼写和大小写,JavaScript 对大小写敏感,若拼写有误,会出现未定义错误。 ### 检查脚本加载顺序 确保包含 `editlottery` 函数定义的脚本在调用该函数的 HTML 元素之前加载。若脚本加载顺序错误,可能在调用函数时函数还未定义。例如: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <!-- 先加载包含函数定义的脚本 --> <script type="text/javascript"> function editlottery() { // 函数逻辑 alert('编辑抽奖'); } </script> </head> <body> <button type="button" onclick="editlottery()">编辑</button> </body> </html> ``` ### 检查特殊字符和语法错误 检查函数定义和调用处是否存在特殊字符或语法错误,比如引用[3]中提到的 ajax 的 `data` 属性引用 Java 变量时,单引号使用错误会导致问题,需确保语法正确。 ### 处理后端数据传递问题 若函数需要使用后端传来的数据,要确保数据能正确传递到前端。可参考引用[2]的解决方法,将需要使用的数据单独提出来作为变量存放,再在函数中使用这些变量。例如: ```html <!DOCTYPE html> <html lang="en" th:inline="javascript"> <head> <meta charset="UTF-8"> <title>Document</title> <script th:inline="javascript"> var lotteryData = [[${lotteryData}]]; </script> <script type="text/javascript" th:inline="none"> function editlottery() { // 使用变量 console.log(lotteryData); // 其他逻辑 } </script> </head> <body> <button type="button" onclick="editlottery()">编辑</button> </body> </html> ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值