XUL 获取选中的 MENUITEM 的值
XUL get the value of MENUITEM selected
我正在像这样在 XUL 中创建一个下拉菜单:
<button id="bid" oncommand="alert(event.target.nodeName)" >
<menupopup>
<menuitem label="one" value="one" />
<menuitem label="two" value="two" />
<menuitem label="three" value="three" />
</menupopup>
</button>
我想提醒被点击的nodeitem的值。使用 event.target.nodeName
将 nodeName
作为 menuitem
但使用 nodeValue
重新调整未定义,因为它开始获取 button
节点的值。如何获得单击的菜单项的值。我也试过 $(this).val()
但即使那样也未定义。使用 $(this).attr('value')
也没有帮助。我可以为 menuitem 设置 oncommand 但这似乎不是实际的解决方案。这是获得价值的唯一方法或某种方法吗?
问题中的 XUL 代码是 non-functional。要么您应该对 window 中的多个不同项目使用 <menulist>
instead of a <button>
, or your <button>
needs the property type="menu"
or type="menu-button"
. If you are going to use a <button>
without the type="menu"
property, you would actually have to open a popup in the command event handler for the <button>
and then select from there. That does not appear to be what you are wanting. It is, however, quite doable. I use a construction like that in one of my add-ons, except I have it open when one of several <label>
items is clicked. This allows re-use of a single <menupopup>
。在那种情况下,<menupopup>
是相当大量的 XUL 代码,我不想在 window.
的 XUL 中重复和维护多个副本。
<menuitem>
的value
selected:
您的实际问题是如何获取用户编辑的 <menuitem>
select 的 value
。下面的所有代码都经过测试并且可以正常工作。正如您从代码中看到的那样,您可以从以下位置获得 <menuitem>
的 value
您 select(在 selection 时):event.target.value
.
使用 <menulist>
元素:
最常用的元素是 <menulist>
。当您让用户 select 从多个选项中选择一个将被记住并在以后使用的选项,或者用于调整用户界面中显示的内容时,通常会使用此选项。它通常不会用于 select 多个即时操作(已执行但未记住选择)。 MDN 上的 <menulist>
is what is used in the examples for <menuitem>
and <menupopup>
。
<menulist id="bid2" oncommand="alert(event.target.value)" >
<menupopup>
<menuitem label="one" value="one" />
<menuitem label="two" value="two" />
<menuitem label="three" value="three" />
</menupopup>
</menulist>
上面的代码会给你一个看起来像按钮的东西,当你点击它时,它有一个 selection of <menuitem>
条目。它将 alert
与您 select 编辑的 <menuitem>
的值。
这将生成如下所示的项目:
您可以点击它打开一个 drop-down 列表:
如果您 select 一个项目:
您将收到警报:
然后该对象将显示您的 selection:
使用 <button>
元素:
也可以使用指定了 属性 type="menu"
或 type="menu-button"
的 <button>
元素。但是,这不会向用户提供关于当前 select 哪个选项的视觉反馈。 [注意:您的 JavaScript 可以手动更改 <button>
label
属性 以提供此反馈。]如果是产生即时操作的按钮,您可以使用这种类型的元素而不是被记住的select离子。
代码:
<button type="menu" id="bid2" label="A Button" oncommand="alert(event.target.value)">
<menupopup>
<menuitem label="one" value="one" />
<menuitem label="two" value="two" />
<menuitem label="three" value="three" />
</menupopup>
</button>
这将生成如下所示的项目:
您可以点击它打开一个 drop-down 列表:
如果您 select 一个项目:
您将收到警报:
然后该对象将 NOT 显示您的 selection:
如果你想设置<button>
的标签来反映用户制作的select离子,你可以使用:
<button type="menu" id="bid2" label="A Button" oncommand="event.target.parentElement.parentElement.label=event.target.value;alert(event.target.value)">
<menupopup>
<menuitem label="one" value="one" />
<menuitem label="two" value="two" />
<menuitem label="three" value="three" />
</menupopup>
</button>
当 three
被 selected 时,会产生一个如下所示的按钮:
使用 <toolbarbutton>
:
您也可以使用 <toolbarbutton>
。
当不悬停时,这样做看起来像:
悬停时:
当打开 selection:
UI设计中的选择:
在设计用户界面时,您必须做出很多选择。有许多不同的方法可以获得相同的有效结果,但外观和感觉略有不同。您真的应该自己尝试这些类型的选项。您可能会发现 XULRunner 程序 XUL Explorer 在制作 XUL 原型时很有用。
选择 UI 元素和外观,在我看来,超出了 Whosebug 问题的范围。虽然您可能得不到具体的 XUL 帮助,但您可以在以下位置询问 UI 设计问题:User Experience stack exchange.
我正在像这样在 XUL 中创建一个下拉菜单:
<button id="bid" oncommand="alert(event.target.nodeName)" >
<menupopup>
<menuitem label="one" value="one" />
<menuitem label="two" value="two" />
<menuitem label="three" value="three" />
</menupopup>
</button>
我想提醒被点击的nodeitem的值。使用 event.target.nodeName
将 nodeName
作为 menuitem
但使用 nodeValue
重新调整未定义,因为它开始获取 button
节点的值。如何获得单击的菜单项的值。我也试过 $(this).val()
但即使那样也未定义。使用 $(this).attr('value')
也没有帮助。我可以为 menuitem 设置 oncommand 但这似乎不是实际的解决方案。这是获得价值的唯一方法或某种方法吗?
问题中的 XUL 代码是 non-functional。要么您应该对 window 中的多个不同项目使用 <menulist>
instead of a <button>
, or your <button>
needs the property type="menu"
or type="menu-button"
. If you are going to use a <button>
without the type="menu"
property, you would actually have to open a popup in the command event handler for the <button>
and then select from there. That does not appear to be what you are wanting. It is, however, quite doable. I use a construction like that in one of my add-ons, except I have it open when one of several <label>
items is clicked. This allows re-use of a single <menupopup>
。在那种情况下,<menupopup>
是相当大量的 XUL 代码,我不想在 window.
<menuitem>
的value
selected:
您的实际问题是如何获取用户编辑的 <menuitem>
select 的 value
。下面的所有代码都经过测试并且可以正常工作。正如您从代码中看到的那样,您可以从以下位置获得 <menuitem>
的 value
您 select(在 selection 时):event.target.value
.
使用 <menulist>
元素:
最常用的元素是 <menulist>
。当您让用户 select 从多个选项中选择一个将被记住并在以后使用的选项,或者用于调整用户界面中显示的内容时,通常会使用此选项。它通常不会用于 select 多个即时操作(已执行但未记住选择)。 MDN 上的 <menulist>
is what is used in the examples for <menuitem>
and <menupopup>
。
<menulist id="bid2" oncommand="alert(event.target.value)" >
<menupopup>
<menuitem label="one" value="one" />
<menuitem label="two" value="two" />
<menuitem label="three" value="three" />
</menupopup>
</menulist>
上面的代码会给你一个看起来像按钮的东西,当你点击它时,它有一个 selection of <menuitem>
条目。它将 alert
与您 select 编辑的 <menuitem>
的值。
这将生成如下所示的项目:
您可以点击它打开一个 drop-down 列表:
如果您 select 一个项目:
您将收到警报:
然后该对象将显示您的 selection:
使用 <button>
元素:
也可以使用指定了 属性 type="menu"
或 type="menu-button"
的 <button>
元素。但是,这不会向用户提供关于当前 select 哪个选项的视觉反馈。 [注意:您的 JavaScript 可以手动更改 <button>
label
属性 以提供此反馈。]如果是产生即时操作的按钮,您可以使用这种类型的元素而不是被记住的select离子。
代码:
<button type="menu" id="bid2" label="A Button" oncommand="alert(event.target.value)">
<menupopup>
<menuitem label="one" value="one" />
<menuitem label="two" value="two" />
<menuitem label="three" value="three" />
</menupopup>
</button>
这将生成如下所示的项目:
您可以点击它打开一个 drop-down 列表:
如果您 select 一个项目:
您将收到警报:
然后该对象将 NOT 显示您的 selection:
如果你想设置<button>
的标签来反映用户制作的select离子,你可以使用:
<button type="menu" id="bid2" label="A Button" oncommand="event.target.parentElement.parentElement.label=event.target.value;alert(event.target.value)">
<menupopup>
<menuitem label="one" value="one" />
<menuitem label="two" value="two" />
<menuitem label="three" value="three" />
</menupopup>
</button>
当 three
被 selected 时,会产生一个如下所示的按钮:
使用 <toolbarbutton>
:
您也可以使用 <toolbarbutton>
。
当不悬停时,这样做看起来像:
悬停时:
当打开 selection:
UI设计中的选择:
在设计用户界面时,您必须做出很多选择。有许多不同的方法可以获得相同的有效结果,但外观和感觉略有不同。您真的应该自己尝试这些类型的选项。您可能会发现 XULRunner 程序 XUL Explorer 在制作 XUL 原型时很有用。
选择 UI 元素和外观,在我看来,超出了 Whosebug 问题的范围。虽然您可能得不到具体的 XUL 帮助,但您可以在以下位置询问 UI 设计问题:User Experience stack exchange.