Headers 可能会产生误导,但我对JavaScript很新,引号已经杀了我 .
当页面加载时,我正在尝试向视图添加一个编辑按钮,并在单击时提醒随机数,如下所示:
var docid = OSZVMeFDJ0eNaCNMffDTji5cf2I3 // random string
$("#tableUser").append('<button type="button" class="btn btn-danger" onclick="loadUser('+ docid +')"><i class="fas fa-user-edit"></i> Edit User</button>');
和:
function loadUser(id) {
console.log(id);
alert(id);
}
但是这段代码既不打印也不警告 . 是因为它没有引号吗?是不是函数参数可以是从Integer到String的任何东西?
更新
结果我把 onlick()
放到 i
这意味着编辑图标,现在我删除并将其添加到按钮但是在控制台上获取:
ReferenceError:找不到变量:OSZVMeFDJ0eNaCNMffDTji5cf2I3
6 回答
您将处理程序
onclick
不附加到button
,而是附加到元素i
. 如果您在项目中导入了font-awesome图标,请尝试单击按钮内的图标,它将显示警告 .解决办法就是在
button
元素上移动onclick
属性:$("#tableUser").append(
<button type="button" class="btn btn-danger" onclick="loadUser(${docid})"><i class="fas fa-user-edit"></i> Edit User</button>);
(编辑后)你当然还需要在qoutes中包装
docid
:您还可以在javascript(反引号)中使用第三种类型的qoutes,这将允许您使用单和双qoutes而不转义并使用字符串插值 .
OSZVMeFDJ0eNaCNMffDTji5cf2I3不是字符串,它应该是'OSZVMeFDJ0eNaCNMffDTji5cf2I3' . Java脚本使用OSZVMeFDJ0eNaCNMffDTji5cf2I3作为变量名称,并且看到它未定义 .
应该
否则,您尝试使用OSZVMeFDJ0eNaCNMffDTji5cf2I3作为变量,该变量不存在 .
如果您从头开始学习JavaScript编程,还有其他一些指示:
唐't use var. Use const or let, depending if it'是常数或变量 .
避免使用jQuery . 十年前,这是一个很好的图书馆 . 今天的JavaScript是不必要的,会阻碍你的学习 . 特别是当你跳转到今天的任何框架和库时 .
使用模板字符串,
with this quotes
. 然后,您可以使用$ 插入任何变量 .loadUser($ {}的docID)
您在字符串中缺少
<tr><td>
以创建有效的HTMLEDIT
你必须在
docId
周围加上引号,因为它是一个字符串而不是一个数字问题是
OSZVMeFDJ0eNaCNMffDTji5cf2I3
isn 't a string. JavaScript sees that and assume it'是一个变量 . 修复问题的方法是简单地将这些字符包装在双"
或单个'
引号中 - 然后JavaScript将识别该字符串 .阅读关于String syntax .
您可以使用称为模板文字或刻度的新ES6功能来实现此目的 .