Javascript-Display div
如果需要,我需要检查onload是否在URL中有锚,以打开选项卡。问题是,如果用户在启动onload函数之前打开一个选项卡,该选项卡将关闭,用户需要再次打开它。 如何解决这个问题 HTML: JS功能:Javascript-Display div,javascript,html,show-hide,Javascript,Html,Show Hide,如果需要,我需要检查onload是否在URL中有锚,以打开选项卡。问题是,如果用户在启动onload函数之前打开一个选项卡,该选项卡将关闭,用户需要再次打开它。 如何解决这个问题 HTML: JS功能: var divState = {}; function showhide(id) { if (document.getElementById) { var divid = document.getElementById(id); divState[id
var divState = {};
function showhide(id) {
if (document.getElementById) {
var divid = document.getElementById(id);
divState[id] = (divState[id]) ? false : true;
for (var div in divState){
if (divState[div] && div != id){
document.getElementById(div).style.display = 'none';
divState[div] = false;
}
}
divid.style.display = (divid.style.display == 'block' ? 'none' : 'block');
}
}
谢谢。
Uli我非常确定,在onload之前会立即执行函数中的标记,因此请尝试。您可以使用额外的参数调用函数,以确保它将显示在加载函数中 然后检查全局初始化变量,以检查用户在从checkurl函数运行时是否已执行该函数。如果用户单击的选项卡与URL中指定的选项卡不同,则需要执行此操作 此外,在更新底部的divid.style.display时,还需要检查divState[id],而不是divid.style.display=='block'
function checkurl(){
if (window.location.hash == '#about')
{
showhide('secabout', true);
}
else if (window.location.hash == '#contact')
{
showhide('seccontact', true);
}
}
var divState = {};
var initialized = false;
function showhide(id, initialize) {
if(initialized && initialize) return;
initialized = true;
if (document.getElementById) {
var divid = document.getElementById(id);
divState[id] = (divState[id]) ? false : true;
for (var div in divState){
if (divState[div] && div != id){
document.getElementById(div).style.display = 'none';
divState[div] = false;
}
}
if(initialize){
divid.style.display = 'block';
} else {
divid.style.display = (divState[id] ? 'block' : 'none');
}
}
}
禁用选项卡,直到触发onload…它不工作。如果URL包含例如contact,并且在onload函数启动之前单击了tab about,那么secabout div将不再关闭。它保持打开状态。在最后一行更新divid.style.display时,需要检查divState[id],而不是divid.style.display=='block'。我已经更新了我的代码示例来解决这个问题。我还添加了一个全局初始化变量来控制用户在onload运行时是否已经选择了选项卡。谢谢您的回答。它在域的根上工作得很好,但是如果我在子页面上使用它,比如-我错过了什么吗?在哈希之前尝试使用斜杠:example.com/about/teamIt需要使用斜杠和不使用斜杠。有没有办法解决这个问题?谢谢。是的,它确实存在,但这没有帮助,因为在那个时候,元素还不存在,所以它将什么也不做。
var divState = {};
function showhide(id) {
if (document.getElementById) {
var divid = document.getElementById(id);
divState[id] = (divState[id]) ? false : true;
for (var div in divState){
if (divState[div] && div != id){
document.getElementById(div).style.display = 'none';
divState[div] = false;
}
}
divid.style.display = (divid.style.display == 'block' ? 'none' : 'block');
}
}
function checkurl(){
if (window.location.hash == '#about')
{
showhide('secabout', true);
}
else if (window.location.hash == '#contact')
{
showhide('seccontact', true);
}
}
var divState = {};
var initialized = false;
function showhide(id, initialize) {
if(initialized && initialize) return;
initialized = true;
if (document.getElementById) {
var divid = document.getElementById(id);
divState[id] = (divState[id]) ? false : true;
for (var div in divState){
if (divState[div] && div != id){
document.getElementById(div).style.display = 'none';
divState[div] = false;
}
}
if(initialize){
divid.style.display = 'block';
} else {
divid.style.display = (divState[id] ? 'block' : 'none');
}
}
}