간단한 for
루프로 이것을 달성 할 수 있습니다 :
var min = 12,
max = 100,
select = document.getElementById('selectElementId');
for (var i = min; i<=max; i++){
var opt = document.createElement('option');
opt.value = i;
opt.innerHTML = i;
select.appendChild(opt);
}
JS 피들 데모 .
내 자신 과 Sime Vidas의 대답에 대한 JS Perf 비교는 그의 생각이 내 것보다 조금 더 이해 가능하고 직관적이라고 생각하고 그것이 어떻게 구현으로 변환되는지 궁금해했기 때문에 실행됩니다. Chromium 14 / Ubuntu 11.04 광산은 다소 빠르지 만 다른 브라우저 / 플랫폼은 결과가 다를 수 있습니다.
OP의 의견에 따라 편집 :
[어떻게] [I] 둘 이상의 요소에 적용합니까?
function populateSelect(target, min, max){
if (!target){
return false;
}
else {
var min = min || 0,
max = max || min + 100;
select = document.getElementById(target);
for (var i = min; i<=max; i++){
var opt = document.createElement('option');
opt.value = i;
opt.innerHTML = i;
select.appendChild(opt);
}
}
}
// calling the function with all three values:
populateSelect('selectElementId',12,100);
// calling the function with only the 'id' ('min' and 'max' are set to defaults):
populateSelect('anotherSelect');
// calling the function with the 'id' and the 'min' (the 'max' is set to default):
populateSelect('moreSelects', 50);
JS 피들 데모 .
마지막으로 (지연 후 ...) 함수를 메소드로 HTMLSelectElement
연결하기 위해 의 프로토 타입을 populate()
DOM 노드에 확장하는 접근 방식입니다 .
HTMLSelectElement.prototype.populate = function (opts) {
var settings = {};
settings.min = 0;
settings.max = settings.min + 100;
for (var userOpt in opts) {
if (opts.hasOwnProperty(userOpt)) {
settings[userOpt] = opts[userOpt];
}
}
for (var i = settings.min; i <= settings.max; i++) {
this.appendChild(new Option(i, i));
}
};
document.getElementById('selectElementId').populate({
'min': 12,
'max': 40
});
JS 피들 데모 .
참고 문헌 :