我正在尝试将变量传递给javascript函数,但我在参数列表后面有“Javascript错误:'缺失'”
html = html + '<a href="javascript:initMap2(' + name.lat +','+ name.lng +','+ name.name +');">' + 'Lugar: ' +name.name +' Coordenadas: Lat '+ name.lat +' Lng'+ name.lng+ '</a><br>';
看起来我没有错过任何')。
答案 0 :(得分:0)
我假设你的最后一个参数应该是一个字符串,但它被解析为看起来像一个变量。试试这个:
html = html + '<a href="javascript:initMap2(' + name.lat +','+ name.lng +',\''+ name.name +'\');">' // etc.
当name.name
解析为字符串时,它将按预期包装在单引号中。它看起来像javascript:initMap2(1, 2, 'someString')
。
答案 1 :(得分:0)
我发现你找到了解决方案,但无论如何这里都是替代方案,这会减少你的字符串连接。还有更好的方法可以实现这一目标,但这可能会帮助您开始看到通过字符串连接摆脱构建HMTL的好处。
<meta charset="UTF-8">
<span id="spanTest"></span>
<script>
// Or whatever your initMap2 function does...
function initMap2(lat, lng, name) {
console.log('Lat: ' + lat);
console.log('Lng: ' + lng);
console.log('Name: ' + name);
}
var spanTest = document.getElementById('spanTest');
var worldLocation = { name:"test", lat:98.5, lng:-88.45 };
var anchor = document.createElement('a');
anchor.href = 'javascript:initMap2(' + worldLocation.lat +', ' + worldLocation.lng + ', \'' + worldLocation.name + '\');';
anchor.innerHTML = 'Name: ' + worldLocation.name + ', Lat: ' + worldLocation.lat + ' Lng: ' + worldLocation.lng;
spanTest.appendChild(anchor);
</script>