簡體   English   中英

更改JavaScript數組值

[英]Changing JavaScript array values

我一直在w3schools上遵循此指南,以基於另一個下拉選擇來動態更改下拉選擇的元素,如下所示:

執行此操作的代碼如下:

<!DOCTYPE html>
<html>
<body>   

<select id="car" onchange="ChangeCarList()"> 
  <option value="">-- Car --</option> 
  <option value="VO">Volvo</option> 
  <option value="VW">Volkswagen</option> 
  <option value="BMW">BMW</option> 
</select> 

<select id="carmodel"></select> 

<script>
var carsAndModels = {};
carsAndModels['VO'] = ['V70', 'XC60', 'XC90'];
carsAndModels['VW'] = ['Golf', 'Polo', 'Scirocco', 'Touareg'];
carsAndModels['BMW'] = ['M6', 'X5', 'Z3'];

function ChangeCarList() {
    var carList = document.getElementById("car");
    var modelList = document.getElementById("carmodel");
    var selCar = carList.options[carList.selectedIndex].value;
    while (modelList.options.length) {
        modelList.remove(0);
    }
    var cars = carsAndModels[selCar];
    if (cars) {
        var i;
        for (i = 0; i < cars.length; i++) {
            var car = new Option(cars[i], i);
            modelList.options.add(car);
        }
    }
} 
</script>

</body>
</html>

但是,我注意到對於第二個下拉選擇,該元素的值已編號,並且我想知道如何將這些值更改為文本。

例如。 在鏈接的示例中,第一個選擇如下:

<select id="car" onchange="ChangeCarList()"> 
  <option value="">-- Car --</option> 
  <option value="VO">Volvo</option> 
  <option value="VW">Volkswagen</option> 
  <option value="BMW">BMW</option> 
</select> 

如果將第一個選擇的值設置為Volvo,則第二個選擇如下:

<select id="carmodel"> 
  <option value="1">V70</option> 
  <option value="2">XC60</option> 
  <option value="3">XC90</option> 
</select> 

與以上相比,我想獲得什么:

<select id="carmodel"> 
  <option value="V70">V70</option> 
  <option value="XC60">XC60</option> 
  <option value="XC90">XC90</option> 
</select> 

var car = new Option(cars[i], i)替換var car = new Option(cars[i], cars[i])

演示:

 var carsAndModels = {}; carsAndModels['VO'] = ['V70', 'XC60', 'XC90']; carsAndModels['VW'] = ['Golf', 'Polo', 'Scirocco', 'Touareg']; carsAndModels['BMW'] = ['M6', 'X5', 'Z3']; function ChangeCarList() { var carList = document.getElementById("car"); var modelList = document.getElementById("carmodel"); var selCar = carList.options[carList.selectedIndex].value; while (modelList.options.length) { modelList.remove(0); } var cars = carsAndModels[selCar]; if (cars) { var i; for (i = 0; i < cars.length; i++) { var car = new Option(cars[i], cars[i]); modelList.options.add(car); } } } 
 <select id="car" onchange="ChangeCarList()"> <option value="">-- Car --</option> <option value="VO">Volvo</option> <option value="VW">Volkswagen</option> <option value="BMW">BMW</option> </select> <select id="carmodel"></select> 

您可以使用PHP / MySQL / Ajax輕松完成此操作並將其存儲在數據庫中,但是,如果您不想使用任何服務器端編程,則可以為每個選項標簽設置data- *全局屬性: data-option="Car model name here"

在W3Schools上了解有關“ data- *”的更多信息: https : //www.w3schools.com/tags/att_global_data.asp

這里有兩個選項供您選擇:

更改構造函數:

var car = new Option(cars[i], cars[i]);

要么

var car = new Option(cars[i]);
car.value = cars[i];

就在構造函數之后。

您面臨的問題是由Option對象的構造函數中的第二個參數引起的,該參數提供了option元素的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM