我正在尝试在我的javascript var
等于div
值时显示提醒消息,这是我在这里尝试的内容:
function checkmydiv() {
var ElementCssClass = document.getElementById("Target");
if (ElementCssClass == "hello")
{
alert("the div has a value");
}
}
这是我的HTML代码
<div id="Target" >hello</div>
<input type="button" value="bader" onclick = "checkmydiv();" />
我不知道哪里出错了,单击按钮bader
时没有弹出窗口
感谢所有帮助:)
答案 0 :(得分:4)
您需要从该元素中获取文本内容。现在,您正在将对象引用与hello
进行比较,这显然不起作用。
if (ElementCssClass.textContent == "hello") {
}
是您正在寻找的。 p>
一句话:所有现代浏览器(=最新版本)都支持.textContent
。但是,IE的旧版本可能无法识别该属性。所以你可能想做像
var myText = ElementCssClass.textContent || ElementCssClass.text;
然后将myText
的值与hello
进行比较,或者只使用ElementCssClass.innerHTML
。我更喜欢以前的解决方案,因为使用.innerHTML
可能会让你在另一个场景中遇到麻烦。
答案 1 :(得分:2)
问题是变量ElementCssClass
现在是DOM节点/对象,而不是字符串;您需要使用innerHTML
,或者,如果支持,innerText
或textContent
:
function checkmydiv() {
var ElementCssClass = document.getElementById("Target").innerHTML;
if (ElementCssClass == "hello") {
alert("the div has a value");
}
}
另外,只是为了良好的练习,我可能会建议远离内嵌JavaScript:
function checkmydiv() {
var ElementCssClass = document.getElementById("Target");
if (ElementCssClass.innerHTML == "hello") {
alert("the div has value");
}
}
var input = document.getElementsByTagName('input');
for (var i = 0, len = input.length; i < len; i++) {
if (input[i].value == 'bader') {
input[i].onclick = function() {
checkmydiv();
}
}
}
为了减少硬编码元素/文本内容以进行比较的需要,您可以将参数传递给函数:
function checkmydiv(id, str) {
var ElementCssClass = document.getElementById(id);
if (ElementCssClass.innerHTML == str) {
alert("the div has value");
}
else {
alert("the div does not have the value.");
}
}
var input = document.getElementsByTagName('input');
for (var i = 0, len = input.length; i < len; i++) {
if (input[i].value == 'bader') {
input[i].onclick = function() {
checkmydiv('Target', 'hello');
}
}
else if (input[i].value == 'bilder') {
input[i].onclick = function() {
checkmydiv('Target', 'some other string');
}
}
}
参考文献: