gpt4 book ai didi

javascript - 添加到 select 无法通过示教 += 方法工作

转载 作者:行者123 更新时间:2023-12-02 13:54:37 25 4
gpt4 key购买 nike

我在使用我们教授的方法添加到选择时遇到问题:

enter image description here

https://jsfiddle.net/gbc3q3sz/这是我的版本,使用上面的示例,但即使 console.log(document.forms[0]["weapons"]) 返回正确的标记,选择框也永远不会被填写

代码:

html:

<body onLoad="OnLoad()">
<form>
<select name="weapons" onChange="SelectWeapon()"></select>
</form>

js:

var weaponsArray = [
'Broadsword',
'Crossbow',
'Magic staff'
];


function OnLoad()
{
for (i = 0; i < weaponsArray.length; i++) {
var weapTag = "<option value='"+ i +"'>"+ weaponsArray[i] +"</option>";

console.log(document.forms[0]["weapons"]);
document.forms[0]["weapons"] += weapTag;


}
}

最佳答案

它不起作用,因为代码编写得就像附加到定义 select字符串框(例如 "<select>..." );但它实际上所做的是尝试附加到现有 select盒,一个HTMLSelectElement 。您不能使用字符串连接来执行此操作(至少不能可靠地跨浏览器)。恐怕您问题顶部的示例根本不正确;它可能适用于某些浏览器,但这绝对不是正确的方法。

您可以使用 options.add 轻松添加元素和 Option构造函数:

function OnLoad()
{
var options = document.forms[0].weapons.options;
for (var i = 0; i < weaponsArray.length; i++) {
options.add(new Option(weaponsArray[i], i));
}
}

示例:

var weaponsArray = [
'Broadsword',
'Crossbow',
'Magic staff'
];

function OnLoad()
{
var options = document.forms[0].weapons.options;
for (var i = 0; i < weaponsArray.length; i++) {
options.add(new Option(weaponsArray[i], i));
}
}
<body onLoad="OnLoad()">
<form>
<select name="weapons" onChange="SelectWeapon()"></select>
</form>

<小时/>

旁注:请注意var我在i前面添加在 Onload代码。您之前的代码已成为 The Horror of Implicit Globals 的牺牲品(这是我贫血的小博客上的一篇文章)。声明变量很重要。

关于javascript - 添加到 select 无法通过示教 += 方法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40788693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com