繁体   English   中英

通过下拉菜单激活Javascript命令

[英]Javascript command activated via drop down Menu

我是Java语言的新手,我正在研究的项目需要帮助。 我知道这个问题可能非常简单,但是Javascript并不是我的强项,而且我似乎找不到自己想要的东西。

我遇到的问题是,我需要根据下拉菜单中可用的选项来更改3D模型中正在渲染的内容。 我只是设法获得了用于更改材质的下拉菜单,但是我需要弄清楚如何使同一个下拉菜单中的多种材质兼容。

这是我现在所拥有的:

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>

JS代码:

 $( "#js-mat-sel" ).bind( "change", function matchange(){
   lapi.applyMaterialToMeshByName( "Silver 1", "Group28884");
 });

当前,当在下拉菜单中选择任何选项时,脚本将从基础材料更改为“银1”。 我希望在下拉菜单中选择“黄铜”时显示材质“金1”,而从下拉菜单中选择“银”时仅显示“银1”。

此外,应该注意的是,我正在使用3D渲染公司Lagoa现有API的派生版本。

[编辑:]

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

还应该注意的是,我从较旧的代码形式中获取了“ Gold 1”和“ Silver 1”,这些代码通过多个CSS制作的按钮完成了我想要的工作。 以下是有效的代码。 但是,按钮很大且不方便,将来,我需要使用更多材料来重新创建此代码,因此下拉菜单更为理想。 这是原始代码:

HTML:

<div class="btn-large" id="js-material-btn-1">Gold</div>
<div class="btn-large" id="js-material-btn-2">Silver</div>

JS:

 $( "#js-material-btn-1" ).bind( "click", function(){
   lapi.applyMaterialToMeshByName( "Gold 1", "Group28884");
 }); 
 $( "#js-material-btn-2" ).bind( "click", function(){
   lapi.applyMaterialToMeshByName( "Silver 1", "Group28884");
 });

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

您希望从哪里获得“黄金1”? 我在您的代码的任何地方都看不到它。

Dementic建议了正确的答案,这就是它的样子。

例如:

<option value="Silver 1" id="silver">Silver</option>
<option value="Gold 1 " id="brass">Brass</option>

和你的js:

$( "#js-mat-sel > select" ).bind( "change", function matchange(){
    lapi.applyMaterialToMeshByName( $(this).val(), "Group28884");
 });

请注意,选项值包含您要发送的实际值。

编辑:您在div上使用.val(),但只能在输入/表单元素(即select元素)上使用。 您应该将change事件修改为绑定到select元素,如下所示: http : //jsfiddle.net/6YBpp/

您也可以更改选择器以选择该div的“ select”子元素,我将答案更新为显示...范围不正确的任何一种方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM