使用普通的'ol vanilla javascript:
选择类名时遇到一些麻烦var email = document.getElementsByClassName('email');
var phone = document.getElementsByClassName('phone');
// Hide phone by default
phone.style.display = "none";
function showContact() {
var dropdown = document.getElementById( "contact-select" ); // Get a reference to the dropdown (select) element
var selectedItemValue = dropdown.options[ dropdown.selectedIndex ].value; // use the dropdown reference to get the selected item's value
if ( selectedItemValue === "phone" ) {
email.style.display = "none";
phone.style.display = "block";
} else {
phone.style.display = "none";
email.style.display = "block";
}
}
每当我尝试调用其中一个变量时,都会一直收到一个未定义的错误。任何帮助将不胜感激。谢谢!
答案 0 :(得分:5)
提示:
document.getElementsByClassName
- 请注意复数。它会返回nodeList
或null
。
调试的第一步应该是console.log(phone)
,看看它有什么价值。
如果没有看到你的标记,我必须做一些猜测但是尝试:
var email = document.getElementsByClassName('email')[0];
var phone = document.getElementsByClassName('phone')[0];
编辑:返回类似于数组的nodeList
,但实际上不是数组。
答案 1 :(得分:2)
getElementsByClassName
未定义,则您的email
和phone
变量未定义。 phone
和email
之前将其添加到页面,则email
和phone
将不确定。 getElementsByClassName
返回一个节点列表,因此您应该实际定义email
和phone
。代码:
var email = document.getElementsByClassName('email')[0];
var phone = document.getElementsByClassName('phone')[0];
更新:或者遍历数组:
for(var i = 0; i < phone.length; i++)
{
phone[i].style.display = "none";
}
答案 2 :(得分:1)
document.getElementsByClassName
返回nodeList
。您可以使用与元素数组类似的方式访问它。
已更改为nodeList