我有这个HTML代码:
<form>
<select name="city" id="city">
<option class="orase" value="0">Choose City</option>
<option class="orase" value="1">Berlin</option>
<option class="orase" value="2">Prague</option>
<option class="orase" value="3">London</option>
<input type="submit" name="srch1" id="srch1" value="Display"/>
</select>
</form>
我只想在城市是柏林并且值被提交(按下按钮)时显示某些内容。但是这个javascript代码无效。
var city = document.getElementsByClassName("city");
var button = document.getElementById("srch1");
button.attachEvent("onsubmit", getCity());
var getCity = function () {
if (city.innerHTML === "Berlin") {
document.write("You are in Berlin");
}
}
答案 0 :(得分:1)
试试这个:
HTML:
<form>
<select name="city" id="city">
<option class="orase" value="0">Choose City</option>
<option class="orase" value="1">Berlin</option>
<option class="orase" value="2">Prague</option>
<option class="orase" value="3">London</option>
</select>
<button type="button" name="srch1" id="srch1">Display</button>
</form>
和JS:
var city = document.getElementById("city");
var button = document.getElementById("srch1");
var getCity = function () {
if (city.value === "1") {
document.body.innerHTML += "You are in Berlin";
}
};
button.addEventListener("click", getCity);
一些变化:
button
而不是input
来防止立即绊倒
重新加载页面。同时将其从select
拉出来。city
,getElementById()
检索到的getElementsByClassName()
返回一个HTMLCollection,它是一个类似于数组的对象
具有给定类名的所有元素。var
并声明函数:function getCity () {...}
value
元素的select
,innerHTML
只包含
option
元素的HTML。document.write()
隐含地打开一个新文档,以及所有文档
旧的内容消失了。使用简单的innerHTML
代替。addEventListener()
代替attachEvent()
。后者
仅适用于IE&lt; 11。 addEventListener
适用于IE9以及所有现代浏览器。注意click
侦听器并修复第二个
参数,只是一个函数名,而不是一个函数调用。答案 1 :(得分:0)
我建议您使用jQuery,这有效:
$("#city").change(function (e) {
e.preventDefault;
var city = $("#city option:selected").text();
if ( city == "Berlin" ) {
alert("You are in Berlin");
}
});
答案 2 :(得分:0)
<select name="city" id="city">
<option class="orase" value="0">Choose City</option>
<option class="orase" value="1">Berlin</option>
<option class="orase" value="2">Prague</option>
<option class="orase" value="3">London</option>
</select>
var a = document.getElementById("city");
a.onchange = function(e){
var index = a.selectedIndex;
alert("You are in " + a[index].innerHTML);
};
答案 3 :(得分:0)
修改输入:
<input type="submit" onClick="displaySomething()" value="Display"/>
然后,在<script>
function displaySomething()
{
if(document.getElementById("city").options[document.getElementById("city").selectedIndex].value==1)
{
//Berlin selected!
}
}
答案 4 :(得分:0)
<form>
<select name="city" id="city">
<option class="orase" value="0">Choose City</option>
<option class="orase" value="1">Berlin</option>
<option class="orase" value="2">Prague</option>
<option class="orase" value="3">London</option>
<input type="button" name="srch1" id="srch1" value="Display" onclick="f1();" />
</select>
</form>
function f1()
{
if ( document.getElementById("city").value == 1) // value 1 is for Berlin
{
alert("do something in this block");
}
}
答案 5 :(得分:0)
<select name="city" id="city">
<option class="orase" value="0">Choose City</option>
<option class="orase" value="1">Berlin</option>
<option class="orase" value="2">Prague</option>
<option class="orase" value="3">London</option>
<input type="submit" name="srch1" id="srch1" value="Display" onclick="eval()" />
</select>
<script>
var city;
function eval() {
city = document.getElementById("city").value;
alert(city);
if (city == "1") {
alert('you are in Berlin');
}
}
</script>
这里有几点要注意,我使用了document.getElementById(&#34; city&#34;),因为它是你点击提交时保持值的选择对象。我还添加了一个单击提交后执行的功能。你想确保在那段时间之后抓住城市的价值;而不是像你拥有它将抓住它在JS加载上的值(在那时应该是未定义的)。
答案 6 :(得分:0)
我会使用简单易用的Jquery方式。
让我们给你一个身份<form id='myForm'>
,然后使用以下内容
jquery代码 -
$("#myForm").submit(function(e){
selected = $("#city option:selected").text();
if(selected == "Berlin"){
alert("your city is Berlin");
}
e.preventDefault();
});
这样它只会在提交后触发if语句,而不会在select更改时触发。