我在HTML文件中使用Javascript来展开和折叠文件的元素。
这是剧本:
function toggleBlock(pstrID){
var myDiv = document.getElementById('d' + pstrID);
if (myDiv){
if (myDiv.style.display == 'none'){
showBlock(pstrID);
} else{
hideBlock(pstrID);
}
}
}
function showBlock(pstrID){
var myDiv = document.getElementById('d' + pstrID);
if (myDiv){
myDiv.style.display = 'block';
var myImage = document.getElementById('i' + pstrID);
if (myImage){
myImage.src = 'arrowdown.gif';
myImage.alt = 'Hide';
}
if (document.location.href.indexOf('mk:@') == 0)
myDiv.innerHTML = myDiv.innerHTML;
}
}
function hideBlock(pstrID){
var myDiv = document.getElementById('d' + pstrID);
if (myDiv){
myDiv.style.display = 'none';
var myImage = document.getElementById('i' + pstrID);
if (myImage){
myImage.src = 'arrowright.gif';
myImage.alt = 'Show';
}
if (document.location.href.indexOf('mk:@') == 0)
myDiv.innerHTML = myDiv.innerHTML;
}
}
当我调用脚本时,我使用以下内容:
<a id="h7217" class="expandingblocktemplate" title="" href="javascript:toggleBlock('7217')">
在Chrome中一切正常。
在IE中,单击链接会导致另一个窗口(显示的地址显示为javascript:toggleBlock('7217'),数字取决于所点击的链接)和错误“Internet Explorer无法显示网页”
在Firefox中,会出现一个新选项卡,错误控制台会显示:
错误:未定义toggleBlock
源文件:javascript:toggleBlock('7217')
行:1
答案 0 :(得分:1)
只需添加
return false ;
在toggleBlock调用之后。
答案 1 :(得分:0)
除了Furqan的解决方案:
您永远不应该在href
属性中触发JavaScript。这是一种非标准方法,容易导致错误,特别是如果您不知道自己在做什么。请改为使用onclick
并在href
属性中为非脚本用户设置有效网址,如果您不关心非脚本用户,则使用href="#"
。
<a id="h7217" class="expandingblocktemplate" title="" onclick="toggleBlock('7217');" href="noscript.html">
答案 2 :(得分:0)
试试这个:
HTML:
<a href="#" onclick="toggleBlock('7217')">
JavaScript的:
function toggleBlock(pstrID) {
var block = document.getElementById('d' + pstrID),
img = document.getElementById('i' + pstrID);
if ( block && img ) {
if ( block.style.display === 'none' ) {
block.style.display = 'block';
img.src ='arrowdown.gif';
img.alt = 'Hide';
} else {
block.style.display = 'none';
img.src = 'arrowright.gif';
img.alt = 'Show';
}
if ( document.location.href.indexOf('mk:@') === 0 ) {
block.innerHTML = block.innerHTML;
}
}
return false;
}