답변:
평범한 오래된 JavaScript 사용하기 :
var val = "Fish";
var sel = document.getElementById('sel');
document.getElementById('btn').onclick = function() {
var opts = sel.options;
for (var opt, j = 0; opt = opts[j]; j++) {
if (opt.value == val) {
sel.selectedIndex = j;
break;
}
}
}
<select id="sel">
<option>Cat</option>
<option>Dog</option>
<option>Fish</option>
</select>
<button id="btn">Select Fish</button>
그러나 실제로 jQuery를 사용하려면 다음을 수행하십시오.
var val = 'Fish';
$('#btn').on('click', function() {
$('#sel').val(val);
});
옵션에 텍스트 내용과 다른 값 속성이 있고 텍스트 내용을 통해 선택하려는 경우 :
<select id="sel">
<option value="1">Cat</option>
<option value="2">Dog</option>
<option value="3">Fish</option>
</select>
<script>
var val = 'Fish';
$('#sel option:contains(' + val + ')').prop({selected: true});
</script>
그러나 위의 설정을하고 jQuery를 사용하여 값으로 선택하려는 경우 이전과 같이 할 수 있습니다.
var val = 3;
$('#sel').val(val);
지원하는 브라우저 document.querySelector
및 HTMLOptionElement::selected
속성의 경우이 작업을보다 간결하게 수행 할 수있는 방법입니다.
var val = 3;
document.querySelector('#sel [value="' + val + '"]').selected = true;
<select data-bind="value: val">
<option value="1">Cat</option>
<option value="2">Dog</option>
<option value="3">Fish</option>
</select>
<script>
var viewModel = {
val: ko.observable()
};
ko.applyBindings(viewModel);
viewModel.val(3);
</script>
<template id="template" is="dom-bind">
<select value="{{ val }}">
<option value="1">Cat</option>
<option value="2">Dog</option>
<option value="3">Fish</option>
</select>
</template>
<script>
template.val = 3;
</script>
참고 : 이것은 최종 안정 릴리스에 대해 업데이트되지 않았습니다.
<app id="app">
<select [value]="val">
<option value="1">Cat</option>
<option value="2">Dog</option>
<option value="3">Fish</option>
</select>
</app>
<script>
var App = ng.Component({selector: 'app'})
.View({template: app.innerHTML})
.Class({constructor: function() {}});
ng.bootstrap(App).then(function(app) {
app._hostComponent.instance.val = 3;
});
</script>
<div id="app">
<select v-model="val">
<option value="1">Cat</option>
<option value="2">Dog</option>
<option value="3">Fish</option>
</select>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
val: null,
},
mounted: function() {
this.val = 3;
}
});
</script>
document.evaluate(".//select[@id='sel']/option[text()='Fish']", document.body, null, 9, null).singleNodeValue.selected = true;
여기에 jquery를 사용하는 예제는 값이 변경되었지만 첫 번째 항목을 표시하는 선택을 그대로 두므로 실제로 올바른 것은 없습니다.
알래스카를 선택하고 올바른 항목을 선택하여 올바른 항목을 표시하도록하려면 다음을 사용하십시오.
<select id="state">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
</select>
jquery를 사용하면 다음과 같습니다.
$('#state').val('AK').change();
JavaScript를 사용하여 select 요소의 값을 변경하여 선택한 옵션을 해당 값이있는 옵션으로 변경할 수 있습니다.
document.getElementById('sel').value = 'bike';
<select id="my_select">
<option value="1">First</option>
<option value="2">Second</option>
<option value="3">Third</option>
</select>
var my_value = 2;
$('#my_select option').each(function(){
var $this = $(this); // cache this jQuery object to avoid overhead
if ($this.val() == my_value) { // if this option's value is equal to our value
$this.prop('selected', true); // select this option
return false; // break the loop, no need to look further
}
});
select 요소의 선택된 옵션의 value & textContent (우리가 보는 것)를 'Mango'로 변경하고 싶습니다.
가장 간단한 코드는 다음과 같습니다.
var newValue1 = 'Mango'
var selectElement = document.getElementById('myselectid');
selectElement.options[selectElement.selectedIndex].value = newValue1;
selectElement.options[selectElement.selectedIndex].textContent = newValue1;
누군가에게 도움이되기를 바랍니다. 행운을 빕니다.
도움이 되었으면 투표하십시오.
var vals = [2,'c'];
$('option').each(function(){
var $t = $(this);
for (var n=vals.length; n--; )
if ($t.val() == vals[n]){
$t.prop('selected', true);
return;
}
});
var vals = ['Two','CCC']; // what we're looking for is different
$('option').each(function(){
var $t = $(this);
for (var n=vals.length; n--; )
if ($t.text() == vals[n]){ // method used is different
$t.prop('selected', true);
return;
}
});
<select>
<option value=""></option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<select>
<option value=""></option>
<option value="a">AAA</option>
<option value="b">BBB</option>
<option value="c">CCC</option>
</select>
나는 여기에 게시 된 거의 모든 답변을 사용했지만 그에 익숙하지 않으므로 한 걸음 더 깊이 파고 내 필요에 맞는 쉬운 솔루션을 찾았고 여러분과 공유 할 가치가 있다고 생각했습니다.
모든 옵션을 반복하거나 JQuery 를 사용하는 대신 간단한 단계로 핵심 JS 를 사용할 수 있습니다 .
예
<select id="org_list">
<option value="23">IBM</option>
<option value="33">DELL</option>
<option value="25">SONY</option>
<option value="29">HP</option>
</select>
따라서 선택할 옵션의 값을 알아야합니다.
function selectOrganization(id){
org_list=document.getElementById('org_list');
org_list.selectedIndex=org_list.querySelector('option[value="'+id+'"]').index;
}
사용하는 방법?
selectOrganization(25); //this will select SONY from option List
귀하의 의견을 환영합니다. :) AzmatHunzai.
검색을 많이 한 후에 속성이 option
아닌 내부 텍스트 만 알고있는 선택 목록에서 @kzh를 시도했지만 value
선택 답변을 기반으로 한이 코드 url
는이 형식의 현재 페이지 에 따라 선택 옵션을 변경하는 데 사용 되었습니다
http://www.example.com/index.php?u=Steve
<select id="sel">
<option>Joe</option>
<option>Steve</option>
<option>Jack</option>
</select>
<script>
var val = window.location.href.split('u=')[1]; // to filter ?u= query
var sel = document.getElementById('sel');
var opts = sel.options;
for(var opt, j = 0; opt = opts[j]; j++) {
// search are based on text inside option Attr
if(opt.text == val) {
sel.selectedIndex = j;
break;
}
}
</script>
이렇게하면 url
매개 변수가 선택된 상태로 유지 되어보다 사용자에게 친숙해지며 방문자는 현재보고있는 페이지 나 프로필을 알 수 있습니다.
약간 깔끔한 바닐라 .JS 버전. 이미 nodeList
누락을 수정했다고 가정하면 .forEach()
:
NodeList.prototype.forEach = Array.prototype.forEach
다만:
var requiredValue = 'i-50332a31',
selectBox = document.querySelector('select')
selectBox.childNodes.forEach(function(element, index){
if ( element.value === requiredValue ) {
selectBox.selectedIndex = index
}
})
$('#myselectid').val()