bluelarva 寫:
不好意思.
我忘了說明這是XUL.
代碼:
<listbox id="fileList" seltype="multiple" flex="1">
<listhead>
<listheader label="Name"/>
<listheader label="Size"/>
<listheader label="Type"/>
<listheader label="Modified" />
</listhead>
<listcols >
<listcol flex="1"/>
<listcol flex="1"/>
<listcol flex="1"/>
<listcol flex="1"/>
</listcols>
<listitem>
<listcell label="abc.txt" />
<listcell label="34243" />
<listcell label="text" />
<listcell label="423324" />
</listitem>
</listbox>
如何用javascript 取出listcell的value (abc.txt):)
代碼:
//<(= =)> <-非 js
var listcells = document.getElementById('fileList').getElementsByTagName('listcell');
var values = [];
for (i = 0; i < listcells.length; i++) {
values.push(listcells[i].label);
}
這樣 values 陣列會變成:
代碼:
['abc.txt', '34243', 'text', '423324'];
假如你有用 prototype.js 這個 JavaScript framework 會更簡單(不過...有人把 Prototype 用在 XUL 嗎?真是前所未見):
代碼:
var values = $$('#fileList listcell').pluck('label');
就這麼簡單,差別就是這麼大(好方便~)。$$() 這個函式可以用 CSS 語法來取得元素,pluck 則是可以把單一的屬性從一個陣列的每個物件一一「拔」(pluck)出來,然後再形成一個陣列。
像之前我舉的 HTML 例子,囉唆一堆:
代碼:
var values = [];
var options = document.getElementById('edit-taxonomy-1').getElementsByTagName('option');
for (i = 0; i < options.length; i++) {
if (options[i].selected) values.push(options[i].value);
}
如果用 prototype.js,只要這樣即可:
代碼:
var values = $F('edit-taxonomy-1');
很簡潔。