[英]How do I make this function object-oriented so that I can just add a new location to my object and it will work in my function?
這是我的js:
var animalAgeValue;
var animalHabitatValue;
var latLong = {
Berlin: {lat:52.5159, lng:13.3777},
SanFrancisco: {lat:37.773972, lng:-122.431297},
Beijing: {lat:39.916668, lng:116.383331}
}
function goToPage(page) {
if(page == "p1") {
document.getElementById("p1").hidden = false
document.getElementById("map").hidden = true
document.getElementById("p2").hidden = true
document.getElementById("newAnimal").hidden = true
} else if(page == "p2") {
document.getElementById("p1").hidden = true
document.getElementById("map").hidden = false
document.getElementById("p2").hidden = false
document.getElementById("newAnimal").hidden = false
document.getElementById("animalNameD").innerHTML = animalNameValue;
document.getElementById("animalAgeD").innerHTML = animalAgeValue;
document.getElementById("animalHabitatD").innerHTML = animalHabitatValue
}
}
function submitted() {
animalNameValue = document.getElementById("animalName").value;
console.log(animalNameValue);
animalAgeValue = document.getElementById("animalAge").value;
console.log(animalAgeValue);
const habitats = document.querySelectorAll('input[name="habitat"]');
for (const habitat of habitats) {
if (habitat.checked) {
animalHabitatValue = habitat.value;
console.log(animalHabitatValue);
if(habitat.value == "Berlin") {
map.setCenter(latLong.Berlin);
map.setZoom(9)
} else if(habitat.value == "San-Francisco") {
map.setCenter(latLong.SanFrancisco);
map.setZoom(9)
} else if(habitat.value == "Beijing") {
map.setCenter(latLong.Beijing);
map.setZoom(9)
}
break;
}
}
goToPage("p2")
}
var submit = document.querySelector('#submit')
submit.onclick = function() {submitted()};
我想重新格式化我submitted
的函數,這樣如果我在我的latLong
對象中添加一個新位置並將該元素添加到我的 HTML 中並在我的網頁中選擇它,它就會工作,它會使我的地圖以位置緯度和經度為中心。 換句話說,我想將新的 lat 和 long 從latLong
對象傳遞給map.setCenter
,而不必每次都添加額外的 if 函數。
您可以使用變量作為屬性名稱,通過括號語法訪問對象屬性。
map.setCenter(latLong[habitat.value]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.