带参数的点击会导致 javascript 语法错误
Onclick with argument causes javascript syntax error
单击 ID "elem" 的元素时,我得到了 "Uncaught SyntaxError: Unexpected identifier"。你能告诉我如何解决这个问题吗?
formulaireDB.allDocs({
include_docs: true
}).then(function(result) {
for (x in result.rows) {
docFeature = result.rows[x].doc;
coord_nv = [docFeature.geometry.coordinates[0],
docFeature.geometry.coordinates[1]];
position = to3857(coord_nv);
map.addOverlay(new ol.Overlay({
position: ol.proj.transform(
[docFeature.geometry.coordinates[0],
docFeature.geometry.coordinates[1]],
'EPSG:4326',
'EPSG:3857'),
element: $('<img id="elem" onclick="clickmarker('
+ result + ',' + x + ')" src="./img/pin32.png">')
}));
}
}).catch(function(err) {
console.log(err);
});
}
function clickmarker(rt, ind) {
var res = rt.rows[ind].doc.geometry.coordinates;
console.log(res);
}
你的 catch 函数后有一个额外的大括号。试试这个:
formulaireDB.allDocs({
include_docs: true
}).then(function(result) {
for (x in result.rows) {
docFeature = result.rows[x].doc;
coord_nv = [docFeature.geometry.coordinates[0], docFeature.geometry.coordinates[1]];
position = to3857(coord_nv);
// add marker
map.addOverlay(new ol.Overlay({
position: ol.proj.transform(
[docFeature.geometry.coordinates[0], docFeature.geometry.coordinates[1]],
'EPSG:4326',
'EPSG:3857'
),
element: $('<img id="elem" onclick="clickmarker(' + result + ',' + x + ')" src="./img/pin32.png">')
}));
}
}).catch(function(err) {
console.log(err);
});
function clickmarker(rt, ind) {
var res = rt.rows[ind].doc.geometry.coordinates;
console.log(res);
}
您正在将 result
连接到一个字符串,并在这一行中丢失了它作为对象的值:
element: $('<img id="elem" onclick="clickmarker(' + result + ',' + x + ')" src="./img/pin32.png">')
您可能需要在点击监听器创建之后添加它,而不是直接添加。
例如
element: $('<img...>').on('click',function(){ clickmarker(result,x); });
单击 ID "elem" 的元素时,我得到了 "Uncaught SyntaxError: Unexpected identifier"。你能告诉我如何解决这个问题吗?
formulaireDB.allDocs({
include_docs: true
}).then(function(result) {
for (x in result.rows) {
docFeature = result.rows[x].doc;
coord_nv = [docFeature.geometry.coordinates[0],
docFeature.geometry.coordinates[1]];
position = to3857(coord_nv);
map.addOverlay(new ol.Overlay({
position: ol.proj.transform(
[docFeature.geometry.coordinates[0],
docFeature.geometry.coordinates[1]],
'EPSG:4326',
'EPSG:3857'),
element: $('<img id="elem" onclick="clickmarker('
+ result + ',' + x + ')" src="./img/pin32.png">')
}));
}
}).catch(function(err) {
console.log(err);
});
}
function clickmarker(rt, ind) {
var res = rt.rows[ind].doc.geometry.coordinates;
console.log(res);
}
你的 catch 函数后有一个额外的大括号。试试这个:
formulaireDB.allDocs({
include_docs: true
}).then(function(result) {
for (x in result.rows) {
docFeature = result.rows[x].doc;
coord_nv = [docFeature.geometry.coordinates[0], docFeature.geometry.coordinates[1]];
position = to3857(coord_nv);
// add marker
map.addOverlay(new ol.Overlay({
position: ol.proj.transform(
[docFeature.geometry.coordinates[0], docFeature.geometry.coordinates[1]],
'EPSG:4326',
'EPSG:3857'
),
element: $('<img id="elem" onclick="clickmarker(' + result + ',' + x + ')" src="./img/pin32.png">')
}));
}
}).catch(function(err) {
console.log(err);
});
function clickmarker(rt, ind) {
var res = rt.rows[ind].doc.geometry.coordinates;
console.log(res);
}
您正在将 result
连接到一个字符串,并在这一行中丢失了它作为对象的值:
element: $('<img id="elem" onclick="clickmarker(' + result + ',' + x + ')" src="./img/pin32.png">')
您可能需要在点击监听器创建之后添加它,而不是直接添加。
例如
element: $('<img...>').on('click',function(){ clickmarker(result,x); });