Это самый простой вариант, когда значение === порядку option
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="" name="myForm">
<select name="mySelect">
<option value="0">Выбрать город</option>
<option value="1">Москва</option>
<option value="2">Санкт-Петербург</option>
<option value="3">Сочи</option>
</select>
</form>
<button onclick="setOption(document.forms.myForm.mySelect, 2);">select #2</button>
<script>
function setOption(select, id) {
if (!select || !id) return false;
select[id].selected = true;
}
</script>
</body>
</html>
А вот этот, если нужно указать на значение (Т.е html ниже - тоже прокатит).
<option value="1231"></option>
<option value="something"></option>
function setOption(select, id) {
if (!select || !id) return false;
[].forEach.call(select.children, function(item) {
if (+item.value === id) {
item.selected = true;
}
});
}
// или так
function setOption(select, id) {
if (!select || !id) return false;
select.querySelector('option[value="'+ id +'"]').selected = true;
}