javascript - 使用 javascript 向选择菜单添加选项时出错
问题描述
我遇到了两个问题:第一个是 javascript 没有向菜单添加选项,第二个是我的 for 循环结束时出现“意外或无效令牌”错误。
更新: 令牌错误是一个奇怪的字符。我删除了导致问题的行并重新输入,现在我不再收到错误,但我的脚本仍然没有添加选项。
我已阅读有关向选择菜单添加选项的信息,但我在那里找到的答案对我不起作用。我应该指出这是 Joomla 网站 (v3.8) 的一部分,因为这可能会导致一些意外行为。
我有一个函数,它应该根据字符串“id”挑选出一个特定的选择菜单,清除它的内容,然后用“options”数组的元素重新填充它。
function resetSelectMenu(id, options){
// Selects the correct menu, enables it, and removes all of its options.
var selectMenu = jQuery('#sel-' + id);
selectMenu.prop('disabled', false);
selectMenu.empty();
// Makes an option element and sets its text and value.
var el = document.createElement("option");
el.text = 'blah';
el.value = 'blah';
// Does not succeed in adding an option to menu.
selectMenu.add(el);
// I declared loop variables here to make sure there are no re-declaration issues.
var i;
var opt;
// The loop is entered and the array is iterated through.
for(i = 0; i < options.length; i++){
opt = options[i];
el = document.createElement("option");
el.text = opt;
el.value = i + 1;
// Does not succeed in adding an option to menu.
selectMenu.add(el);
}
}
该函数确实针对正确的菜单并清除其内容,但它没有添加“blah”选项或“options”数组中的任何内容。我尝试使用“appendChild(el)”而不是 add,但出现“appendChild() 不是函数”形式的错误。我做了很多控制台日志来确定代码的所有部分都按预期工作,除了“selectMenu.add(el);”
解决方案
所以这只是一个菜鸟错误。我仔细看了看,发现了这个相关的问题,马特的最佳答案告诉我,我需要使用append(el)
而不是add(el)
. 我查看了文档,该add
方法只影响 jQuery 对象,但实际上根本不影响 DOM,而append
确实如此。如果我要使用,add
我需要明确告诉 jQuery 对象刷新 DOM。
selectMenu.empty()
我使用而不是类似的东西也可能存在问题selectMenu.find('option').remove()
,但目前它没有引起任何错误。由于我的选择元素只包含选项元素,我觉得这两个命令是相同的,但另一方面,也许后者更好,因为它允许以后添加不同类型的元素。
推荐阅读
- javascript - 从 Wordpress 发送数据时的 GoogleSpreadSheet 时间戳
- javascript - 为什么我的 js 数组只显示最后一个?
- python - 为什么是pandas.read_json,修改长整数的值?
- python - 无法找到将变量放入不同类标签的方法
- c++ - 多达 10 亿个对象?我什至可以使用 Vector 吗?
- c++ - 当我使用父类指针将它们添加到向量时,我不能使用子类特定的功能
- python - 使用 forex-python 包遍历列以转换货币
- java - 检索表名列表
- java - OWL-API 重命名不会删除旧的猫头鹰:推理器中的事物子类
- c++ - c ++:指向特定大小的对象的“合适对齐”是什么?