通过下拉菜单激活的Javascript命令

通过下拉菜单激活的Javascript命令,javascript,jquery,html,drop-down-menu,Javascript,Jquery,Html,Drop Down Menu,我对使用Javascript还不熟悉,我正在做的一个项目需要帮助。我知道这个问题可能非常简单,但Javascript并不是我的强项,我似乎无法自己找到我想要的东西 我遇到的问题是,我需要根据下拉菜单中的可用选项更改三维模型中的渲染内容。我只是设法用下拉菜单来更改材质,但我需要弄清楚如何使用同一下拉菜单中的多个材质 以下是我现在拥有的: HTML代码: <div class="variant-option" id="js-mat-sel"> <div class="varia

我对使用Javascript还不熟悉,我正在做的一个项目需要帮助。我知道这个问题可能非常简单,但Javascript并不是我的强项,我似乎无法自己找到我想要的东西

我遇到的问题是,我需要根据下拉菜单中的可用选项更改三维模型中的渲染内容。我只是设法用下拉菜单来更改材质,但我需要弄清楚如何使用同一下拉菜单中的多个材质

以下是我现在拥有的:

HTML代码:

<div class="variant-option" id="js-mat-sel">
  <div class="variant-option-title">Finish: </div>
  <select data-variant-option-name="Finish">
    <option value="none">Select Finish</option>
    <option value="Silver" id="silver">Silver</option>
    <option value="Brass" id="brass">Brass</option>
  </select>
</div>
</div>
当前,当选择下拉菜单上的任何选项时,脚本将从基础材质更改为“Silver 1”。当我在下拉菜单上选择“黄铜”时,我希望它显示材料“Gold 1”,当我从下拉菜单中选择“Silver”时,它只显示“Silver 1”

另外,应该注意的是,我使用的是

[编辑:]

所以,我知道我做错了什么,我只是不知道如何正确地做我想做的事情

还应该注意的是,我从一个较旧的代码形式中获得了“gold1”和“silver1”,它通过多个CSS按钮实现了我想要的功能。下面是有效的代码。但是,按钮很大,不方便,将来我需要用更多的材料重新创建代码,因此下拉菜单更理想。以下是原始代码:

HTML:

您已将“Silver 1”硬编码为您提交的选项

您希望从哪里获得“黄金1”?我在你的代码中没有看到它

Dementic给出了正确的答案,下面是它的样子

例如:

<option value="Silver 1" id="silver">Silver</option>
<option value="Gold 1 " id="brass">Brass</option>
注意,选项值包含您发送的实际值

EDIT:您正在div上使用.val(),但它只能用于输入/表单元素(即select元素)。您应该修改要绑定到select元素的更改事件,如下所示:


您还可以更改选择器以选择该div的“select”子元素,我更新了答案以显示。。。无论哪种方式,范围都不正确

(“Silver 1”,“Group28884”)
更改为
($(this).val(),“Group28884”)
此外,将值更改为“Silver 1”似乎这就是你想要的。我只是尝试了一下,但它什么也没做。Gold 1是正在使用的Lagoa API中调用的值之一。也许你可以提供一个JSFIDLE和一些工作代码,以便对其进行测试。。。我不知道API的情况,但除非API可以采用“silver 1”或“group28884”并将这些参数转换为“gold1”,否则这是行不通的。每次选择某个对象时,您都会应用相同的参数。是的,我知道我介绍的代码存在的问题,我只是不知道如何使它使用多个变量而不是一个集合变量。我不知道JS,所以我不知道需要做什么才能根据下拉列表更改值。由于某些原因,提供的更正根本不起作用。目前,下拉列表不会改变任何内容。我已经对代码进行了三次检查,以确保语法正确,并且没有任何错误。我不知道现在的问题是什么。除了$(this).val()之外,还有其他方法调用所选的值吗?它可以工作!非常感谢你。
<div class="btn-large" id="js-material-btn-1">Gold</div>
<div class="btn-large" id="js-material-btn-2">Silver</div>
 $( "#js-material-btn-1" ).bind( "click", function(){
   lapi.applyMaterialToMeshByName( "Gold 1", "Group28884");
 }); 
 $( "#js-material-btn-2" ).bind( "click", function(){
   lapi.applyMaterialToMeshByName( "Silver 1", "Group28884");
 });
<option value="Silver 1" id="silver">Silver</option>
<option value="Gold 1 " id="brass">Brass</option>
$( "#js-mat-sel > select" ).bind( "change", function matchange(){
    lapi.applyMaterialToMeshByName( $(this).val(), "Group28884");
 });