在字符串中添加引号

时间:2018-12-09 15:46:20

标签: javascript

标题可能会误导您,但是我对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

6 个答案:

答案 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编程,请参考其他一些提示:

  1. 请勿使用var。使用const或let,这取决于它是常量还是变量。
  2. 避免使用jQuery。十年前,这是一个很好的图书馆。今天的JavaScript不再是必需的,并且会阻碍您的学习。特别是当您跳到当今的任何框架和库时。
  3. 使用带有引号的模板字符串。然后,您可以使用$ {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进行转义而不使用字符串插值。