1
과도한 코드를 피하기 위해 for loop
으로 반복하고 싶은 배열이 있습니다. 나는 다음과 같은 싶습니다 :배열을 반복하는 FOR 루프
var mySchool = document.getElementById(varID[0]);
google.maps.event.addDomListener(mySchool,'click', function() {
filterMap(layer, tableId, map);
});
과 비슷한 제품을 더 할 수있다 : 나는 약간의 독서를 해왔
for(var i=0; i < varID.length; i++){
var mySchool = document.getElementById(varID[i]);
google.maps.event.addDomListener(mySchool,'click', function() {
filterMap(layer, tableId, map);
});
}
와 나는 '자바 스크립트 폐쇄와 함께 할 수있는 뭔가가 있지만 의심 t의 인생에 대한 내가 찾은 다양한 코드 예제와 함께 작동하도록. 나는 경험 많은 사람들이 Javascript 초보자에게 빠진 것을 발견 할 수 있기를 희망합니다.
내 전체 코드는 다음과 같습니다 : 체크 박스에 끌 내 다각형을 설정하는
이//There are more items in my array but i wanted to keep it short here
var varID = [
"adamRobertson",
"blewett",
"brentKennedy"
];
var tableId = '1yc4wo1kBGNJwpDm6e-eJY_KL1YhQWfftjhA38w8';
function initialize() {
var map = new google.maps.Map(document.getElementById('map-canvas'), {
center: new google.maps.LatLng(49.491052,-117.304484),
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var layer = new google.maps.FusionTablesLayer();
filterMap(layer, tableId, map);
//Trying to get this to work
for(var i=0; i < varID.length; i++){
var mySchool = document.getElementById(varID[i]);
google.maps.event.addDomListener(mySchool,'click', function() {
filterMap(layer, tableId, map);
});
}
//Trying to avoid this 25 times
/*
google.maps.event.addDomListener(document.getElementById(varID[0]),
'click', function() {
filterMap(layer, tableId, map);
});
*/
}
// Filter the map based on checkbox selection.
function filterMap(layer, tableId, map) {
var where = generateWhere();
if (where) {
if (!layer.getMap()) {
layer.setMap(map);
}
layer.setOptions({
query: {
select: 'Location',
from: tableId,
where: where
}
});
} else {
layer.setMap(null);
}
}
// Generate a where clause from the checkboxes. If no boxes
// are checked, return an empty string.
function generateWhere() {
var filter = [];
var schools = document.getElementsByName('school');
for (var i = 0, school; school = schools[i]; i++) {
if (school.checked) {
var schoolName = school.value.replace(/'/g, '\\\'');
filter.push("'" + schoolName + "'");
}
}
var where = '';
if (filter.length) {
where = "School IN (" + filter.join(',') + ')';
}
return where;
}
google.maps.event.addDomListener(window, 'load', initialize);
HTML은 기본적으로 입력이 포함되어 있습니다.
미리 도움을 청하십시오.
Quentin. 답장을 보내 주셔서 감사합니다. 나는 이것을 시도했는데 어떤 이유로 그것이 작동하지 않는다. 그것은 그것을 보는 것이 의미가 있으며, 누군가는 그것이 효과가 있다고 생각할 것입니다. 나는 그걸 좀 더 엉망으로 만들고 어떤 일이 일어날지를 보게 될 것이다. – danagerous
더 가까운 기능의 매개 변수에 google 개체를 추가해야 할 수도 있습니다. 내가 말했던 것처럼 나는지도 api를 사용하지 않고 있었다. 그래서 나는 단지 추측하고있다. –
Quentin. 아름다움. 매력처럼 작동합니다. 내가'initialize()'함수에서 여분의 중괄호를 사용했다는 사실이 드러났습니다. 내 코드가 흥미로운 방식으로 응답하지 않게되었습니다. 클로저에있는 인수를 사용하는 솔루션은 내 루프를 강타했습니다. 정말 고마워. – danagerous