Здравствуйте, yuriy_b, Вы писали:
CS>>selectRange() снимает предыдущее выделение и ставит новое на всех элементах в [optFirst ... optLast] range.
CS>>Если optFirst и optLast оба null то просто снимает выдкление.
CS>>Вроде как просто, нет?
_>Андрей, проблема лишь в том, что я не могу получить этот "// linear list of all option's: " для своего случая.
_>Например как его получить, когда элементы подлежащие выделению лежат на разных уровнях:
Не понимаю твою проблему если честно. Это как бы тривиальный обход дерева, нет?
Эта вот функцтя:
var arrayOfOptions = select.$$(option);
Вернет список
всех <option> элементов внутри select. На любом уровне. И в DOM order.
Это вот
<html>
<head>
<title></title>
<style></style>
<script type="text/tiscript">
function self.ready() {
var select = $(select);
for(var option in select.$$(option))
stdout.println( option.firstNode.text.trim() );
}
</script>
</head>
<body>
<select|tree>
<option>Root
<option>Node 1
<option>Leaf 1.1</option>
<option>Leaf 1.2</option>
</option>
<option>Node 2
<option>Leaf 2.1</option>
<option>Leaf 2.2</option>
<option>Leaf 2.3</option>
</option>
</option>
</select>
</body>
</html>
Напечатает
Root
Node 1
Leaf 1.1
Leaf 1.2
Node 2
Leaf 2.1
Leaf 2.2
Leaf 2.3