1

次のように、Firefox拡張機能にリッチリストボックスがあります。

<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 に追加します。

結果は次のとおりです。

リストボックスの複数選択

アイテムはすべて選択されているように見え、その選択を変更できません。

もう1つの奇妙なことは、行の1つをクリックして実行すると、次のようになります。

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

0と言います。

ここで何か不足していますか?

4

2 に答える 2

2

非表示かどうかに関係なく、リストは最初のアイテムを自動的に選択します。クローンを作成すると、そのアイテムも「選択済み」の状態になります。<richlistbox>最も簡単な解決策: テンプレートをタグ内に配置せず、外側のどこかに配置します。

于 2013-05-15T06:06:22.533 に答える
1

リストの最初の項目を複製する方法のために、その項目から予想外の追加のプロパティを取得しています。このようなリストの最初の項目は、これらのプロパティを継承します。

クローン コードでは、項目をリストに追加する前に、属性selectedを削除してください。current

例:

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);
于 2013-05-14T22:20:20.630 に答える