你的JavaScript代码是错误的在多个方面:
- 首先,当我执行它,我得到“功能语句需要一个名称”(等待什么?!)
- 有你
if
声明的末尾;
,让您的else
声明完全无用
- 你为什么要用几乎完全相同的内容来声明两个函数?
- 你声明一个函数没有名字,但你永远不使用它
- 你的if语句是不正确,您同时拥有一个
=
和==
迹象吧:你要测试的真正考验是什么?
我将展示如何从你的代码,我尝试修复后的问题一一其他:
这是你的初始代码:
$(document).ready(
function() {
$("#divArea").click(function(e) {
e.preventDefault();
$("#areasCovered").fadeToggle(1000);
document.getElementById("h3Class").innerHTML = "View Areas Covered -";
});
});
function() {
$("#divArea").click(function(e) {
e.preventDefault();
$("#areasCovered").fadeToggle(1000);
if (document.getElementById("h3Class").value = "View Areas Covered -" == true) {
document.getElementById("h3Class").innerHTML = "View Areas Covered +";
}; else {
}
});
});
首先,在怀疑与时你的代码,这是一个好一点的同名函数,你的外部化“的document.ready”代码:
// I've just taken the function in the $(document).ready call
// and externalize it with a name
function onReady() {
$("#divArea").click(function(e) {
e.preventDefault();
$("#areasCovered").fadeToggle(1000);
document.getElementById("h3Class").innerHTML = "View Areas Covered -";
});
}
$(document).ready(onReady);
// here you can see there is still a function with no name
// why is that happening ? that's not correct
function() {
$("#divArea").click(function(e) {
e.preventDefault();
$("#areasCovered").fadeToggle(1000);
if (document.getElementById("h3Class").value = "View Areas Covered -" == true) {
document.getElementById("h3Class").innerHTML = "View Areas Covered +";
}; else {
}
});
});
现在,你可以看到显示此unammed未使用的功能清晰。如果是未使用的,还有其他地方的一个问题:它的逻辑应该在onReady
方法:
function onReady() {
$("#divArea").click(function(e) {
e.preventDefault();
$("#areasCovered").fadeToggle(1000);
if (document.getElementById("h3Class").value = "View Areas Covered -" == true) {
document.getElementById("h3Class").innerHTML = "View Areas Covered +";
}; else {
}
});
}
$(document).ready(onReady);
接下来,我们尽量简化你的代码位:
function onReady() {
$("#divArea").click(function(e) {
e.preventDefault();
$("#areasCovered").fadeToggle(1000);
// use local variable when you can
var elementToReplace = document.getElementById("h3Class");
// look closely at this if statement,
// you should see 2 incorrect things
if (elementToReplace.value = "View Areas Covered -" == true) {
elementToReplace.innerHTML = "View Areas Covered +";
}; else {
}
});
}
$(document).ready(onReady);
你if
具有如下形式: if (a.b = "c" == true)
。这是一个有效的JavaScript语句,但绝对不是你想要做的。我想你想要的是:if (a.b === "c")
。 因此,让我们改写这个if
声明,并把大括号在新行:
if (elementToReplace.value === "View Areas Covered -")
{
elementToReplace.innerHTML = "View Areas Covered +";
};
else
{
}
你看到if
的}
后挂起;
?这是不正确的。
最后,这里是你可以做什么:
// when in doubt with your code, it's a bit better to
// externalize your "document.ready" code in a named function
function onReady() {
$("#divArea").click(function(e) {
e.preventDefault();
$("#areasCovered").fadeToggle(1000);
// use local variable when you can
var element = document.getElementById("h3Class");
if (element.value === "View Areas Covered -")
{
element.innerHTML = "View Areas Covered +";
}
else
{
element.innerHTML = "something else";
}
});
}
$(document).ready(onReady);
这个lloks容易。但是我不明白你想要做什么。你能展示HTML并解释发生了什么,以及何时发生HTML? – JotaBe 2014-08-29 09:29:01
@JotaBe更新^^ – Dog124 2014-08-29 09:30:43
您的if子句看起来很难看,您不必检查== true,请尝试document.getElementById(“h3Class”)。value ==“查看区域覆盖 - ” – 2014-08-29 09:32:32