我想突出顯示基於用戶在下拉菜單中選擇的特定網格單元格。首先,我有一些下拉菜單的HTML。通過下拉菜單選項觸發功能
<select id="Status" class="dropdown-submenu">
<option selected disabled>Status</option>
<option value="NEW">New</option>
<option value="EXPORTED">Exported</option>
<option value="CHECKEDIN">Checked In</option>
<option value="POSTED">Posted</option>
</select >
我也有一個全球性的陣列,其收集作業數據(包括針對每個作業狀態),並涉及所述地圖上的網格單元通過一個鍵,「CID」。
var JobsArray = [];
然後我有一個javascript變量,它改變了網格單元格的樣式。
//variable to highlightJob cells
var highlightJob = {
fillColor: '#FF0000',
fillOpacity: 0.5,
weight: 0.25,
dashArray: ''
};
接下來,我得到了用戶的選擇,然後通過我的jobsArray每個項目搜索,看看如果用戶的狀態選擇該作業的狀態相匹配。如果確實如此(並且該作業通過「cid」比較匹配地圖上的單元格),則它會調用圖層上的.setStyle(highlightJob)
方法。
document.getElementById("Status").onchange = function() {
var status = document.getElementById("Status").value;
console.log(status);
};
onEachFeature: function(feature, layer){
var id = feature.properties.CID;
JobsArray.forEach(function (item) {
if(item.status === status && item.cid === id) {
layer.setStyle(highlightJob);
};
return false;
});
這工作,如果我在爲item.status
如
if(item.status === 'NEW' && item.cid === id) {... };
癥結硬編碼的選擇似乎越來越迴路中status
變量。
注意#2:這是從我原來的帖子編輯。自上述以來,我嘗試了其他解決方案,但似乎無法獲得layer.setStyle(highlightJob);
部分的工作。我添加了下面的部分(以及一些變體)來處理從用戶選擇的下拉菜單中獲取當前狀態值。所有console.log()'s
正在返回所需的值。舉例來說,如果我狀態更改爲「NEW」,該console.log(status)
返回值「NEW」和1
console.log(status);
JobsArray.forEach(function (item) {
if(item.status === 'NEW' && item.cid === id) {
console.log('Yay');
document.getElementById("Status").onchange = function() {
var status = document.getElementById("Status").value;
console.log(status);
if(status === 'NEW') {
layer.setStyle(highlightJob);
console.log("Whew");
stat = "1";
// } else {
// layer.setStyle(resetStyle);
};
console.log(stat);
var stat = "1";
if(stat === "1") {
console.log("yikes");
layer.setStyle(highlightJob);
};
};
};
return false;
});
您可以在'JobsArray.forEach()'之前添加一個console.log(status)並將結果添加到您的文章中? – dckuehn
當然。它只是返回「狀態」,這是作爲目前標題的下拉菜單中的默認禁用選項。我添加了額外的代碼。請參閱上面的註釋2。 – jcbridwe
那麼'onchange'事件現在在工作嗎?您的問題現在是否着重於圖層突出顯示? – dckuehn