Javascript 根据选择更改多个 Div 内容

标签 javascript html input

我有一个包含各种选项和多个 div 的下拉选择,它们应该根据所选选项更改内容,如下所示(下拉选项以粗体显示):

1 号房子
房子颜色 #1
房屋位置 #1
房子大小 #1

2 号房子
房子颜色 #2
房屋位置 #2
房子大小 #2

大多数解决方案都使用显示/隐藏脚本,但这对我来说行不通,因为我最终会为每种颜色、位置隐藏太多重复的 div,尺寸等。

我希望有值的选项:

<select>
<option value="house 1">House #1</option>
<option value="house 2">House #2</option>
<option value="house 3">House #3</option>
</select>

并为 div 使用 ID,例如

<div id="color">House Color #1</div>
<div id="location">House Location #1</div>
<div id="size">House Size #1</div>

并在逻辑所在的后台单独的js脚本中的某处拥有所有相应的值

div id='color' 是(house 1 = House Color #1),(house 2 = House Color #2)等等。

div id='size' 是(house 1 = House Size #1),(house 2 = House Size #2)等等。

我希望这是有道理的。

最佳答案

使用 select 的 onchange 事件将当前房屋值(value)传递给一个函数,该函数检索相应的值并通过设置您的 innerHTML 属性更新您的页面各自的 div。

const data = {
  "house 1":{
    color:"yes",
    location:"Mars",
    size:"small",
  },
  "house 2":{
    color:"all",
    location:"Neverland",
    size:"rather huge",
  },
  "house 3":{
    color:"mauve",
    location:"Los Angeles",
    size:"It's ok",
  },
};

function showHouse(value) {
  document.getElementById("color").innerHTML=data[value]["color"];
  document.getElementById("location").innerHTML=data[value]["location"];
  document.getElementById("size").innerHTML=data[value]["size"];
}
showHouse("house 1");
document.querySelector("select").onchange=e=>showHouse(e.target.value);
<select>
<option value="house 1">House #1</option>
<option value="house 2">House #2</option>
<option value="house 3">House #3</option>
</select>

<div id="color">House Color #1</div>
<div id="location">House Location #1</div>
<div id="size">House Size #1</div>


奖励:如果您计划拥有更多字段,您可以像这样缩短代码:

["color","location","size","altitude"].forEach(
    a=>document.getElementById(a).innerHTML=data[value][a]
);

关于Javascript 根据选择更改多个 Div 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57345042/

相关文章:

javascript - Modernizr:测试 WebGL 与 WebGL 扩展

html - 非常基本的 CSS 不会听取 HTML Div

html - 显示 : table-cell, 边框间距不适用于按钮?

javascript - 在 jQuery Mobile 中更改按钮文本的字体大小

javascript - 如何在ReactJS项目中使用webpack预加载第三方的css和js文件?

javascript - 未捕获错误 : Syntax error, jQuery 升级后无法识别的表达式

Java 交互不允许扫描用户输入

c - 为什么我不能在 C 中读取 Ctrl+S?

javascript - 如何取消突出显示onclick?

html - Bootstrap 完全 100% 高度,带有侧边栏