【发布时间】:2018-05-24 17:46:49
【问题描述】:
我有一个下拉菜单,可根据此处看到的所选选项(在本例中为 3 个可用国家/地区)更改内容:
function hideAllContent(){
Array.prototype.forEach.call(document.getElementById('locations').children, function(v){
v.style.display = 'none';
})
}
function openCountry(divId){
var el = document.getElementById(divId);
if(el){
hideAllContent();
el.style.display = 'block';
}
}
.country {
display: none;
}
.country:first-child {
display: block;
}
<select onchange="openCountry(value);">
<option value="GT">Guatemala</option>
<option value="HN">Honduras</option>
<option value="SV">El Salvador</option>
</select>
<div id="locations">
<div id="GT" class="country">
Content for Guatemala
</div>
<div id="HN" class="country">
Content for Honduras
</div>
<div id="SV" class="country">
Content for El Salvador
</div>
</div>
我想添加自动国家检测,以便在下拉列表中选择用户的国家,并且国家 div 也会发生变化。 我能够使用this codepen 中的资产按国家/地区自动更改下拉列表,但在手动选择国家/地区之前,div 不会更改,而且 freegeoip.net/json 很快就会被弃用; ipinfo.io/json 似乎也在做同样的事情,here's 就是一个例子,以防万一。
我想应该通过 onchange 以外的方式调用 javascript 函数,这样不仅会在手动更改选择之前发生,而且不知道如何继续。
【问题讨论】:
-
您是否尝试为适合当前国家/地区的 OPTION 设置“selected”属性?这应该像在第一个 codepen 中一样工作。
-
我想知道以
<option selected="selected" disabled="">Please Select</option>作为您的第一个选项是否会确保确实发生更改。我不知道你从哪里测试 - 但如果你总是得到危地马拉 - 那么我认为“onchange”不会触发。 -
我尝试将第一个选项设置为已选中(我在萨尔瓦多),下拉菜单更改为萨尔瓦多,内容没有更改。
标签: javascript jquery html css