не могли бы вы просто сохранить рабочий индекс?
var _selectIndex = 0;
...code...
var newSelectBox = document.createElement("select");
newSelectBox.setAttribute("id","select-"+_selectIndex++);
EDIT
При дальнейшем рассмотрении вы можете предпочесть использовать имена в стиле массива для выбора ...
1010 *, например *
<select name="city[]"><option ..../></select>
<select name="city[]"><option ..../></select>
<select name="city[]"><option ..../></select>
затем на стороне сервера в php, например:
$cities = $_POST['city']; //array of option values from selects
РЕДАКТИРОВАТЬ 2 В ответ на комментарий OP
Динамическое создание опций с использованием методов DOM может быть выполнено следующим образом:
var newSelectBox = document.createElement("select");
newSelectBox.setAttribute("id","select-"+_selectIndex++);
var city = null,city_opt=null;
for (var i=0, len=cities.length; i< len; i++) {
city = cities[i];
var city_opt = document.createElement("option");
city_opt.setAttribute("value",city);
city_opt.appendChild(document.createTextNode(city));
newSelectBox.appendChild(city_opt);
}
document.getElementById("example_element").appendChild(newSelectBox);
при условии, что массив cities
уже существует
В качестве альтернативы вы можете использовать метод innerHTML .....
var newSelectBox = document.createElement("select");
newSelectBox.setAttribute("id","select-"+_selectIndex++);
document.getElementById("example_element").appendChild(newSelectBox);
var city = null,htmlStr="";
for (var i=0, len=cities.length; i< len; i++) {
city = cities[i];
htmlStr += "<option value='" + city + "'>" + city + "</option>";
}
newSelectBox.innerHTML = htmlStr;