首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >addEventListener onchange下拉选定值Javascript

addEventListener onchange下拉选定值Javascript
EN

Stack Overflow用户
提问于 2018-06-26 07:54:37
回答 2查看 12.3K关注 0票数 3

我正在尝试根据下拉框选择的值运行2个函数。

代码:

代码语言:javascript
复制
var activities = document.getElementById("stand");
activities.addEventListener("change", function() {

  if (activities.options[activities.selectedIndex].value == "stand1") {
    var footRight = new THREE.Mesh(new THREE.BoxGeometry(.040, 0.55, 0.05), wallMaterial);
    partitionLeft.add(footRight);
    footRight.position.set(-0.12, -0.11, 2);
  } else {
    var footRight = new THREE.Mesh(new THREE.BoxGeometry(.040, 0.55, 0.05), wallMaterial);
    partitionLeft.add(footRight);
    footRight.position.set(-4.12, -8.9, 6);
  }
});
代码语言:javascript
复制
<div id="door-stand">
  <label>Select the stand type:</label>
  <select id="stand">
    <option class="stand1" value="stand1"> Stand 1 </option>
    <option class="stand2" value="stand2"> Stand 2 </option>
  </select>
</div>

问题是,尽管下拉列表中的值一直在变化,但上面的任何函数都不会触发。

当下拉列表中的值发生变化时,我试图打印一些内容;但是,根本没有打印任何内容。

当我更改下拉列表中的值时,出现控制台错误。仅当更改这些值时,才会弹出控制台错误。这就是为什么我没有注意到。上面写着

wallMaterial未定义

EN

回答 2

Stack Overflow用户

发布于 2018-06-26 08:10:23

正如您所看到的,在删除所有不必要的代码后,这个简单的代码片段将按预期工作:

代码语言:javascript
复制
const activities = document.getElementById('stand');

activities.addEventListener('change', (e) => {
  console.log(`e.target.value = ${ e.target.value }`);
  console.log(`activities.options[activities.selectedIndex].value = ${ activities.options[activities.selectedIndex].value }`);
});
代码语言:javascript
复制
<select id="stand">
  <option class="stand1" value="stand1">Stand 1</option>
  <option class="stand2" value="stand2">Stand 2</option>
</select>

这意味着您的代码中可能存在其他错误:

  • 可能出了什么差错:

const活动= document.getElementById('stand');activities.addEventListener('change',(e) => { console.log('Change START');activities.nonexistentFunction();console.log('Change END');});

1号站2号站

您可能还有其他一些调用Event.stopImmediatePropagation()

  • change侦听器

常量活动= document.getElementById('stand');activities.addEventListener('change',(e) => { e.stopImmediatePropagation();console.log('Change 1');});activities.addEventListener('change',(e) => { console.log('Change 2');});

1号站2号站

票数 7
EN

Stack Overflow用户

发布于 2019-05-05 08:56:25

您可以使用this.value在回调函数中访问所选选项的值:

代码语言:javascript
复制
   document.getElementById('stand').onChange = function(){  
        console.log(this.value);
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51033185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档