当单选按钮具有特定值时,我试图使用原始Javascript显示/隐藏元素。我可以使用内联Javascript,但我想尝试使用addEventListener方法。
这是我的HTML:
<label for="petType">Type of Pet: </label>Cat<input" class="radio" name="petType" type="radio" id="petType" value="cat">Dog<input class="radio" name="petType" id="petType" type="radio" value="dog">Other<input class="radio" name="petType" id="petType" type="radio" value="other">
<label for="state">Breed:</label>
<select id="breed">
<option>Shiba Inus</option>
<option>Pembroke Welsh Corgi</option>
<option>Boxer</option>
<option>English Bulldog</option>
</select>
以下是我在使用内联函数时使用的Javascript,在我的HTML中使用处理程序onchange =“asdf(this.value)”。
function asdf(x) {
var breed = document.getElementById('breed');
if (dog == "dog") {
breed.style.display = "inline";
}
else {
breed.style.display = "none";
}
}
这是我到目前为止所做的:
function asdf(x) {
var breed = document.getElementById('breed');
if (dog == "dog") {
breed.style.display = "inline";
}
else {
breed.style.display = "none";
}
}
var typeOfPet = getElementsByName('petType');
typeOfPet.addEventListener('change', asdf, false);
答案 0 :(得分:1)
尝试:
function asdf(x) {
var breed = document.getElementById('breed');
if (this.value === "dog") { //Look for this.value for dog.
breed.style.display = "inline";
} else {
breed.style.display = "none";
}
}
var typeOfPet = document.getElementsByName('petType'); //Get the elements by name
for (var i = 0, l = typeOfPet.length; i < l; i++) { //Loop through them
typeOfPet[i].addEventListener('change', asdf, false); //Bind listener to them each of them.
}
<强> Demo 强>
this.value
并进行比较答案 1 :(得分:1)
问题#1:永远不会定义dog
。我相信你想检查更改元素的值是否为dog,所以你应该这样做:
if (this.value == "dog") {
问题#2:getElementsByName
需要作为另一个对象(通常是文档)的方法调用
var typeOfPet = document.getElementsByName('petType');
问题#3:AddEventListener
应该有一个小写字母a。它也不能应用于getElementsByName返回的节点集合。你应该循环遍历每个元素。
for(var i = typeOfPet.length; i--;) {
typeOfPet[i].addEventListener('change', asdf, false);
}