标题可能会误导您,但是我对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);
}
但是此代码既不会打印也不会发出警报。是因为它没有引号吗?函数参数不是从整数到字符串都可以吗?
原来我已经将onlick()
放到i
中,这意味着编辑图标,现在我将其删除并添加到了按钮中,但是可以在控制台上找到它:
ReferenceError:找不到变量:OSZVMeFDJ0eNaCNMffDTji5cf2I3
答案 0 :(得分:2)
OSZVMeFDJ0eNaCNMffDTji5cf2I3不是字符串,应为“ OSZVMeFDJ0eNaCNMffDTji5cf2I3”。 Java脚本将OSZVMeFDJ0eNaCNMffDTji5cf2I3用作变量名,并发现它未定义。
答案 1 :(得分:1)
您可以使用称为模板文字或刻度的ES6新功能来实现此目的。
$("#tableUser").append(`<button type="button" class="btn btn-danger" onclick="loadUser(${docid})"><i class="fas fa-user-edit"></i> Edit User</button>`);
答案 2 :(得分:1)
问题是OSZVMeFDJ0eNaCNMffDTji5cf2I3
不是字符串。 JavaScript看到了这一点,并假设它是一个变量。解决问题的方法是,只需将这些字符用双引号"
或单引号'
括起来-JavaScript就会识别该字符串。
//The function we will call when the button is clicked.
function loadUser(id) {
console.log(`docid is: ${id}`);
}
//Add the event listener
document.querySelector('#docIdBtn').addEventListener('click', function() {
//Notice how the string is wrapped in quotation marks
var docid = "OSZVMeFDJ0eNaCNMffDTji5cf2I3";
//Call the function you defined above, pass in the "id" arg.
loadUser(docid);
});
<button id="docIdBtn">Click</button>
有关String syntax的阅读。
答案 3 :(得分:1)
var docid = OSZVMeFDJ0eNaCNMffDTji5cf2I3
应该是
var docid = "OSZVMeFDJ0eNaCNMffDTji5cf2I3"
否则,您尝试将OSZVMeFDJ0eNaCNMffDTji5cf2I3用作变量,该变量不存在。
如果您是从头开始学习JavaScript编程,请参考其他一些提示:
使用带有引号的模板字符串。然后,您可以使用$ {variable}插值任何变量。
`loadUser($ {docid})`
答案 4 :(得分:0)
为了创建有效的HTML,您在字符串中缺少了:RM1;
编辑
您必须在<tr><td>
周围加上引号,因为它是字符串而不是数字
答案 5 :(得分:0)
您未将处理程序onclick
附加到button
上,而是附加到元素i
上。如果您在项目中导入了真棒字体图标,请尝试单击按钮内部的图标,它将显示警报。
解决方案是仅将onclick
元素上的button
属性移动:
$("#tableUser").append(`<button type="button" class="btn btn-danger" onclick="loadUser(${docid})"><i class="fas fa-user-edit"></i> Edit User</button>`);
(编辑后)当然,您还需要将docid
包装在qoutes内:
var docid = "OSZVMeFDJ0eNaCNMffDTji5cf2I3"
您还可以在javascript中使用第三种类型的qoutes(反引号),这将允许您使用单和双qoutes进行转义而不使用字符串插值。