1

我的 Firefox 扩展上有一个 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 中。

结果是:

列表框多选

这些项目似乎都已被选中,我无法更改该选择。

另一个奇怪的事情是,如果我单击其中一条线并执行以下操作:

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 回答