追加子项并排序动态列表
Append child and sort dynamic list
我有一张地图,其 features
随地图范围而变化。函数 renderListings
为每个要素创建一个元素 item
,然后在每次地图更改时将所有项目添加到 listingEl
。到目前为止,一切正常。
每个item
的innerHTML
是基于特征的一个属性——prop.code
,是一串文本。此时函数以无序方式而不是按字母顺序附加项目。
我曾尝试将 .sort()
添加到 listingEl.appendChild(item).sort()
,但随后只有 一个 项目出现在列表中,所有其他项目都消失了。
如何根据 javascript 中的 属性 prop.code
特征按字母顺序追加子项?
var listingEl = document.getElementById('feature-listing');
function renderListings(features) {
// Clear any existing listings
listingEl.innerHTML = '';
if (features.length) {
features.forEach(function(feature) {
var prop = feature.properties;
var item = document.createElement('a');
item.target = '_blank';
item.innerHTML = '<div style ="display:inline;"> ' + prop.code + ' </div>'
listingEl.appendChild(item);
});
只需在将功能添加到列表之前对其进行排序。
var listingEl = document.getElementById('feature-listing');
function renderListingsSorted(features) {
var sortedFeatures = sortFeaturesByCode(features);
renderListings(sortedFeatures);
}
function sortFeaturesByCode(features) {
return features.sort(function(f1, f2){
var code1 = f1.properties.code;
var code2 = f2.properties.code;
return code1.localeCompare(code2);
});
}
function renderListings(features) {
// ...
}
我有一张地图,其 features
随地图范围而变化。函数 renderListings
为每个要素创建一个元素 item
,然后在每次地图更改时将所有项目添加到 listingEl
。到目前为止,一切正常。
每个item
的innerHTML
是基于特征的一个属性——prop.code
,是一串文本。此时函数以无序方式而不是按字母顺序附加项目。
我曾尝试将 .sort()
添加到 listingEl.appendChild(item).sort()
,但随后只有 一个 项目出现在列表中,所有其他项目都消失了。
如何根据 javascript 中的 属性 prop.code
特征按字母顺序追加子项?
var listingEl = document.getElementById('feature-listing');
function renderListings(features) {
// Clear any existing listings
listingEl.innerHTML = '';
if (features.length) {
features.forEach(function(feature) {
var prop = feature.properties;
var item = document.createElement('a');
item.target = '_blank';
item.innerHTML = '<div style ="display:inline;"> ' + prop.code + ' </div>'
listingEl.appendChild(item);
});
只需在将功能添加到列表之前对其进行排序。
var listingEl = document.getElementById('feature-listing');
function renderListingsSorted(features) {
var sortedFeatures = sortFeaturesByCode(features);
renderListings(sortedFeatures);
}
function sortFeaturesByCode(features) {
return features.sort(function(f1, f2){
var code1 = f1.properties.code;
var code2 = f2.properties.code;
return code1.localeCompare(code2);
});
}
function renderListings(features) {
// ...
}