我有这个for-in循环,应该返回一个带有div标记且具有onclick函数的img元素。由于某种原因,我收到此错误-参数列表后出现Uncaught SyntaxError:missing)-我不知道我在哪里错过了它。任何帮助或建议,将不胜感激。谢谢。

for (var key in icons) {

 var legend = document.getElementById('legend');
 //the variables below points to objects
 var type = icons[key];
 var name_place = type.name;
 var icon = type.icon;
 var div = document.createElement('div');
 div.innerHTML = '<img'  + ' src="' + icon + '"' +
 'onclick="displayMarker( ' + name_place + ' )"' + '> ' + name_place;
  legend.appendChild(div);
}

 //When I try:
 div.innerHTML = '<img'  + ' src="' + icon + '"' +
 'onclick="displayMarker(name_place)"> ' + name_place;


变量name_place没有传递到函数中

最佳答案

var icons = {
  one: {
    name: 'name1',
    icon: 'icon1.img'
  },
  two: {
    name: 'name2',
    icon: 'icon2.img'
  }
};

function displayMarker( arg) {
  console.log("displayMarker argument %s value: %s", typeof arg, arg);
}

for (var key in icons) {

  var legend = document.getElementById('legend');
  //the variables below points to objects
  var type = icons[key];
  var name_place = type.name;
  var icon = type.icon;
  var div = document.createElement('div');
  div.innerHTML = '<img src="' + icon + '" onclick="displayMarker(\'' + name_place + '\')"> ' + name_place;
  legend.appendChild(div);
}

<div id="legend"></div>





您需要为功能参数添加参数的引号。

由于您已经使用单引号表示字符串,因此需要转义\'字符以进行参数传递。

建议:尽可能使用event delegation

09-17 18:21
查看更多