【发布时间】:2020-08-26 21:30:02
【问题描述】:
我正在学习 JS 事件并将它们放入 HTML 中。我在做
var myCountriesSelect = document.querySelector("#mySelect");
function init() {
var countries = ['USA', 'France', 'Italy', 'Brazil', 'Colombia', 'Belize', 'Venezuela'];
for (var i = 0; i < countries.length; i++) {
var opt = countries[i];
var el = document.createElement("option");
el.innerHTML = opt;
el.value = opt;
myCountriesSelect.appendChild(el);
}
}
@charset "UTF-8";
body {
text-align: center;
background-size: cover;
}
select {
-moz-appearance: none;
-webkit-appearance: none;
text-indent: 0.01px;
text-overflow: '';
padding: 1em 0 1em 1em;
border: 1px solid #107177;
border-radius: 0;
position: relative;
border-right-width: 20px;
background-color: rgba(0, 0, 0, 0.5);
color: #fff;
font-weight: bold;
text-transform: uppercase;
}
select:focus {
outline: none;
border-color: #169ca4;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>repl.it</title>
</head>
<body onload="init();">
<select id="mySelect">
<option value="-1">Select your country</option>
</select>
</body>
</html>
这个练习,但我不知道如何添加一个事件侦听器,该侦听器会在选择列表中选择的国家/地区触发警报。
说明如下:
- 使用innerHTML 属性将所有这些国家添加到
#mySelect选择中。 - 然后,为“更改”事件添加一个侦听器,并在用户选择该国家/地区时显示并提醒该国家/地区。
【问题讨论】:
-
我还建议在窗口上使用 addEventListener 而不是在正文标签上使用内联:
window.addEventListener("load",() => {const sel = document.getElementById("mySelect"); sel.addEventListener("change",e => console.log(e.currentTarget.value)); sel.innerHTML += ['USA', 'France', 'Italy', 'Brazil', 'Colombia', 'Belize', 'Venezuela'] .map(country => new Option(country,country).outerHTML)}) -
感谢@mplungjan 的推荐,但练习要求我这样做,因为 HTML 已经完成
-
我没有更改任何 HTML。如果 HTML 上有 body onload,那就是不好的教学
-
我知道在现实生活和工作中最好的方法是将其放在 JS 中而不是 HTML 内联中,但这对于 repl.it 平台的初学者来说是一个渐进的练习,并且 HTML 是预定义的。
标签: javascript dom onclick dom-events onchange