如何使用Javascript更改没有ID的HTML元素?

如何使用Javascript更改没有ID的HTML元素?,javascript,html,Javascript,Html,我在HTML下拉列表中列出了250个国家(为了节省空间,我只在下面列出了5个): 阿富汗 阿兰群岛 阿拉斯加州 阿尔巴尼亚 阿尔及利亚 不幸的是,我无法编辑HTML元素本身,所以我想知道是否有办法使用Javascript隐藏除Alaska(value=AK)之外的所有HTML元素 我目前有以下情况: var country = document.querySelectorAll('select[name="postalCountry"] option'); var e; for (e =

我在HTML下拉列表中列出了250个国家(为了节省空间,我只在下面列出了5个):


阿富汗
阿兰群岛
阿拉斯加州
阿尔巴尼亚
阿尔及利亚
不幸的是,我无法编辑HTML元素本身,所以我想知道是否有办法使用Javascript隐藏除Alaska(value=AK)之外的所有HTML元素

我目前有以下情况:

var country = document.querySelectorAll('select[name="postalCountry"] option');
var e;

for (e = 0; e < country.length; e++){
country[e].style.display = 'none';
}

country[2].style.display = 'initial';
var country=document.querySelectorAll('select[name=“postalCountry”]选项');
变量e;
对于(e=0;e
但这有点混乱,因为我必须通过许多国家才能找到列表末尾一个国家的指数


非常感谢您的任何建议

如果您只想设置样式,最好只使用CSS:

选择[name=“postalCountry”]选项
{
显示:无;
}
选择[name=“postalCountry”]选项[value=“AK”]
{
显示:首字母;
}

阿富汗
阿兰群岛
阿拉斯加州
阿尔巴尼亚
阿尔及利亚也许你可以使用每个选项的“值”,如下所示

var country=document.querySelectorAll('select[name=“postalCountry”]选项');
对于(var e=0;e

阿富汗
阿兰群岛
阿拉斯加州
阿尔巴尼亚
阿尔及利亚

使用JavaScript使Alaska成为select元素的第一个元素,并将select的值设置为“AK”:

在CSS中,隐藏除第一个选项以外的所有选项:

select[name="postalCountry"] option:not(:first-child) {
  display: none;
}
这将克服Chrome中的一个缺陷,它显示了第一个选项,即使它是隐藏的

片段:

var sel=document.querySelector('select[name=“postalCountry”]”);
optAK=document.querySelector('option[value=“AK”]”);
选择前置器(optAK);
sel.value='AK'
选择[name=“postalCountry”]选项:不(:第一个孩子){
显示:无;
}

阿富汗
阿兰群岛
阿拉斯加州
阿尔巴尼亚
阿尔及利亚

在我们开始之前:所采用的答案是正确的,并且效果良好

这里有一种替代方法,展示了如何使用ES2015(
)将
节点列表
作为
数组
进行迭代。这样,我们就可以使用
find
方法来定位正确的
,而无需使用形式循环和条件

请记住,它只在(IE除外)中起作用。另外,请注意,它是一种语法糖,根据个人喜好可以被认为是更好或最差的,但与传统的迭代方法不同,所以要有意义地使用它

let options=[…document.querySelectorAll(“#国家/地区选择选项”)]
options.forEach(e=>e.style.display='none')
让选定项=选项。查找(e=>e.value==='AK')
selected.style.display='initial'
selected.selected=true

阿富汗
阿兰群岛
阿拉斯加州
阿尔巴尼亚
阿尔及利亚

这是正确的方法,除非你想喜欢
映射
,它在一个列表中如此之小,对性能没有多大影响。因此,阅读文本或值,看看它是否匹配……你不能在某些浏览器中隐藏
,尤其是IE。你必须删除或禁用它。你可以使用jQuery@FedericoklezCulloca没有可以在上调用
.map()
的数组。如果目的是只更改元素的一个属性,为什么要将每个元素转换为另一个元素?而您的答案显示的值为
Afghanistan
:)那么还需要一件事。我要添加这个答案XDYep我添加了selected attr,所以选择了阿拉斯加:)
var sel = document.querySelector('select[name="postalCountry"]');
    optAK = document.querySelector('option[value="AK"]');

sel.prepend(optAK);
sel.value = 'AK';
select[name="postalCountry"] option:not(:first-child) {
  display: none;
}