添加第二个参数时,Javascript函数将停止工作
Javascript function stops working when adding a second parameter
我有下面的单参数JS函数,它隐藏/显示一个html表,并且在一个小异常的情况下正常工作-我需要点击两次才能显示所需的效果:
function toggle_visibility(id)
{
var e = document.getElementById(id);
if(e.style.display != 'none')
e.style.display = 'none';
else
e.style.display = 'table';
}
现在,当我添加第二个参数并扩展函数以在两个img源路径之间切换时,它就不再工作了。Firebug控制台不提供任何错误消息或其他线索:
function toggle_visibility(id, arrow)
{
var e = document.getElementById(id);
var i = document.getElementById(arrow);
if(e.style.display != 'none')
e.style.display = 'none';
i.src = 'img/arrowDownWhiteRight.bmp';
else
e.style.display = 'table';
i.src = 'img/arrowDownWhite.bmp';
}
我从中调用函数的html元素显示如下:
<tr id="trigger" class="toggle" onclick="toggle_visibility('collapsible1', 'img1')">
第二个参数的元素:
<td id="triggerArrow"><img id="img1" src="img/arrowDownWhiteRight.bmp"></td>
要隐藏/显示的元素(默认为"显示:无")
<table class="collapsible" id="collapsible1">
...
您需要使用块:
function toggle_visibility(id, arrow)
{
var e = document.getElementById(id);
var i = document.getElementById(arrow);
if(e.style.display != 'none') { // <== {
e.style.display = 'none';
i.src = 'img/arrowDownWhiteRight.bmp';
} else { // <== } and {
e.style.display = 'table';
i.src = 'img/arrowDownWhite.bmp';
} // } <==
}
在JavaScript中,与大多数从B(C、C++、C#、Java、JavaScript…)语法派生而来的语言一样,缩进被完全忽略,并且只有一个语句在if
、while
或else
等控制结构之后被附加到该控制结构;因此,如果将多个语句附加到它们,则使用块语句(spec,MDN){ ... }
将这些语句分组在一起。
因此:
if (condition)
doThis();
doThat(); // Misleading indentation, doThat *always* runs
真的是
if (condition)
doThis();
doThat();
其中添加一个块使两个调用都取决于条件:
if (condition) {
doThis();
doThat(); // Only happens if the condition is true now
}
{
和}
的位置(在同一行,在它们自己的行上,等等)完全取决于您的风格。我在上面第一个代码块中显示的样式非常非常常见,但根据您为函数放置{
的位置,您可能更喜欢其他常见的样式(尽管在其他B派生语言中比在JavaScript中更常见):
function toggle_visibility(id, arrow)
{
var e = document.getElementById(id);
var i = document.getElementById(arrow);
if(e.style.display != 'none')
{
e.style.display = 'none';
i.src = 'img/arrowDownWhiteRight.bmp';
}
else
{
e.style.display = 'table';
i.src = 'img/arrowDownWhite.bmp';
}
}
无论哪种方式都无关紧要,做同样的事情。
如果您想在If之后执行2个或多个语句,请使用大括号对它们进行分组:
function toggle_visibility(id, arrow){
var e = document.getElementById(id);
var i = document.getElementById(arrow);
if(e.style.display != 'none'){
e.style.display = 'none';
i.src = 'img/arrowDownWhiteRight.bmp';
} else{
e.style.display = 'table';
i.src = 'img/arrowDownWhite.bmp';
}
}
相关文章:
- 更改智能表中的页面将停止JQuery函数的工作
- 我将此代码移动到一个单独的函数中,它停止工作,为什么
- 当if条件被添加到循环中时,Javascript函数将停止工作
- 添加第二个参数时,Javascript函数将停止工作
- 一个Javascript函数中的错误导致其他函数停止工作
- 在jQuery.html()更新时,其他函数将停止工作
- 函数在简单的更改后突然停止工作
- 使用引导:切换导航栏时,JS 函数停止工作
- 画布的 .fillText 函数似乎在首次调用后停止工作
- .click() 函数在同一页面上提交表单后停止工作
- 函数停止代码工作
- JQuery 函数突然停止工作,转换 Javascript 参数时出错
- 添加参数时调用javascript函数停止工作,这真的不大声吗
- 添加 tr 标签会导致函数停止工作
- 添加int时,Javascript函数停止工作
- youtube API函数停止工作了
- 当我添加jquery验证函数时,我的其他函数停止工作
- 添加更多函数后,函数停止工作
- Javascript条件语句会导致其他函数停止工作
- 为什么这个javascript函数停止工作