2013-05-14 69 views
1

我有一個richlistbox我的Firefox擴展如下:XUL Richlistbox選擇問題

<richlistbox id="accList" class="accList" seltype="single" flex="1"> 
    <richlistitem id ="accListTemplate" hidden="true"> 
     <listcell class="sessionActivate"/> 
     <listcell class="nameItem"/> 
     <listcell class="lastUsedItem"/> 
     <spacer flex="1" /> 
     <listcell class="sessionDelete" /> 
     <listcell class="sessionComplete" /> 
     <listcell class="sessionDetails" /> 
    </richlistitem> 
</richlistbox> 

通過JavaScript我克隆此richlistitem並將其添加到與我想要的值richlistbox。

結果是:

Listbox multiple selection

的項目似乎都被選中,我無法改變的選擇。

另一個奇怪的是,如果我上線點擊做到:

alert(document.getElementById("accList").selectedCount); 

它說0

我失去了一些東西?

回答

2

隱藏與否,列表自動選擇第一個項目 - 當你克隆它,你會得到它的「選擇」的狀態爲好。最簡單的解決方案:只是不要把你的模板放在<richlistbox>標籤內,把它放在外面的某個地方。

+0

謝謝。這很好。 – 2013-05-15 08:14:50

1

由於您克隆列表中的第一個項目的方式,您會從該項目中獲得一些您並不期待的額外屬性。像這樣的列表中的第一項繼承這些屬性。

在您的克隆代碼中,刪除屬性selectedcurrent,然後再將其添加到列表中。

例子:

var newtemplate = document.getElementById("accListTemplate").cloneNode(true); 
newtemplate.removeAttribute("hidden"); 
newtemplate.removeAttribute("id"); 
newtemplate.removeAttribute("current"); 
newtemplate.removeAttribute("selected"); 
// do your content manipulation 
document.getElementById("accList").appendChild(newtemplate); 
+0

感謝您的回答。這很好,但我最終使用弗拉基米爾在其他答案上寫的方式。 – 2013-05-15 08:20:02