用于隐藏html列的Javascript语法

用于隐藏html列的Javascript语法,javascript,html,dom,Javascript,Html,Dom,我正在研究切换显示和隐藏表列的代码 我假设这会创建一个数组: var States = { }; 为什么不需要这个 此行是否将States col element.isOpen属性设置为true States[col] = {isOpen : true}; 我正在研究如何修改此函数,以便使用cookie保存此列的状态。i、 e.-呈现页面时,列默认设置为无。但是,如果最后一个操作是ShowColumn,并且页面被重新呈现,我希望该列仍然处于打开状态,而不是返回默认状态 守则: /*****

我正在研究切换显示和隐藏表列的代码

我假设这会创建一个数组:

var States = { };
为什么不需要这个

此行是否将States col element.isOpen属性设置为true

States[col] = {isOpen : true}; 
我正在研究如何修改此函数,以便使用cookie保存此列的状态。i、 e.-呈现页面时,列默认设置为无。但是,如果最后一个操作是ShowColumn,并且页面被重新呈现,我希望该列仍然处于打开状态,而不是返回默认状态

守则:

/**************************************************************************
 *
 * Function:    toggleVis
 *
 * Description: Following Function hides and expands the main column.
 *              
 *
***************************************************************************/
// Set the default "show" mode to that specified by W3C DOM
// compliant browsers

  var showMode = 'table-cell';


// However, IE5 at least does not render table cells correctly
// using the style 'table-cell', but does when the style 'block'
// is used, so handle this

  if (document.all) showMode='block';

// This is the function that actually does the manipulation

var States = { };

function toggleVis(col){

    if (!States[col] || States[col].IsOpen == null)
    {
        States[col] = {isOpen : true}; // This assumes the cell is already shown
        //States[col] = {isOpen : false}; // This assumes the cell is already hidden
    } 

    //mode =  States[col].IsOpen ? showMode : 'none';
    mode =  States[col].IsOpen ? 'none' : showMode; //starts from closed, next click need open

    cells = document.getElementsByName(col);
    for(j = 0; j < cells.length; j++) cells[j].style.display = mode;

    States[col].IsOpen = !States[col].IsOpen;
}
/**************************************************************************
*
*功能:toggleVis
*
*描述:以下函数隐藏并展开主列。
*              
*
***************************************************************************/
//将默认的“显示”模式设置为W3CDOM指定的模式
//兼容浏览器
var showMode='表格单元格';
//然而,IE5至少不能正确地呈现表格单元格
//使用样式“表格单元格”,但在样式“块”时使用
//使用了,所以处理这个
如果(document.all)showMode='block';
//这是实际执行操作的函数
变量状态={};
功能切换(col){
如果(!States[col]| | States[col].IsOpen==null)
{
States[col]={isOpen:true};//这假设单元格已经显示
//States[col]={isOpen:false};//这假设单元格已隐藏
} 
//模式=状态[col].IsOpen?显示模式:“无”;
mode=状态[col].IsOpen?'none':showMode;//从关闭开始,下一步单击需要打开
单元格=document.getElementsByName(col);
对于(j=0;j
好吧,也许这太离谱了,但我认为你这样做完全是错误的

  • 下载jQuery并安装它(它是 大约17kb,一点点开销)
  • 生成页面时,为给定列中的每个td指定一个公共类,如class='col2'
  • 使用脚本库删除并隐藏所有单元格

    $('.col2.hide()

  • 要显示列,请使用“显示”功能:

    $('.col2').show()
    
      ...
      States[col].IsOpen = !States[col].IsOpen;
    
      // uses the function from quirksmode.org
      createCookie("colState", States[col].IsOpen, 7 /*days until expiration*/);
    }
    
    你完了


    有了正确的库,这样的事情就容易多了。看到它以其他方式完成是很痛苦的。

    好吧,也许这有点离谱,但我认为你这样做完全是错误的

  • 下载jQuery并安装它(它是 大约17kb,一点点开销)
  • 生成页面时,为给定列中的每个td指定一个公共类,如class='col2'
  • 使用脚本库删除并隐藏所有单元格

    $('.col2.hide()

  • 要显示列,请使用“显示”功能:

    $('.col2').show()
    
      ...
      States[col].IsOpen = !States[col].IsOpen;
    
      // uses the function from quirksmode.org
      createCookie("colState", States[col].IsOpen, 7 /*days until expiration*/);
    }
    
    你完了


    有了正确的库,这样的事情就容易多了,看到它以其他方式完成很痛苦。

    语法,
    var States={}
    ,用于创建新对象


    类似地,
    {isOpen:true}
    创建一个新对象,该对象的
    isOpen
    属性等于
    true
    语法
    var States={}
    ,用于创建一个新对象

    var States = {}
    
    类似地,
    {isOpen:true}
    创建一个新对象,该对象的
    isOpen
    属性等于
    true

    var States = {}
    
    这将创建一个新的对象-数组和对象在javascript中非常相似,但存在一些细微的差异

    States[col] = {isOpen : true} 
    
    创建一个新对象并将其放入States对象的下一个索引中。例如,现在可以使用States.col1.isOpen访问此值

    我注意到您有两种不同的键入方式:IsOpen-en-IsOpen,这可能会给您带来问题

    接下来,您必须使用所需信息设置cookie-查看以下URL:

    希望这有帮助

    这将创建一个新的对象-数组和对象在javascript中非常相似,但存在一些细微的差异

    States[col] = {isOpen : true} 
    
    创建一个新对象并将其放入States对象的下一个索引中。例如,现在可以使用States.col1.isOpen访问此值

    我注意到您有两种不同的键入方式:IsOpen-en-IsOpen,这可能会给您带来问题

    接下来,您必须使用所需信息设置cookie-查看以下URL:


    希望这有帮助

    您需要一些基本概念:

    首先

    cookie只是一个特殊格式的字符串,可以作为文档对象的属性访问:

    您只需在toggleVis函数末尾保存状态:

    $('.col2').show()
    
      ...
      States[col].IsOpen = !States[col].IsOpen;
    
      // uses the function from quirksmode.org
      createCookie("colState", States[col].IsOpen, 7 /*days until expiration*/);
    }
    
    并在窗口加载时读取cookie(这只是伪代码):

    使用大括号声明对象,变量名区分大小写

    States[col] = { isOpen : true };
    
    不一样

    States[col] = { IsOpen : true };
    

    您的代码中似乎存在此错误,因为您试图读取IsOpen,但设置了IsOpen。

    您需要一些基本概念:

    首先

    cookie只是一个特殊格式的字符串,可以作为文档对象的属性访问:

    您只需在toggleVis函数末尾保存状态:

    $('.col2').show()
    
      ...
      States[col].IsOpen = !States[col].IsOpen;
    
      // uses the function from quirksmode.org
      createCookie("colState", States[col].IsOpen, 7 /*days until expiration*/);
    }
    
    并在窗口加载时读取cookie(这只是伪代码):

    使用大括号声明对象,变量名区分大小写

    States[col] = { isOpen : true };
    
    不一样

    States[col] = { IsOpen : true };
    

    您的代码中似乎存在此错误,因为您尝试读取IsOpen,但设置了IsOpen。

    是的,我知道这很痛苦,但是无法添加jQuery。是的,我知道这很痛苦,但是无法添加jQuery。谢谢。Re:小写的“isOpen”,这真的有效吗?当我将其替换为大写等参时,第一次单击不会执行任何操作,或将其设置为默认-关闭。然后,在切换之后单击下一个按钮,等等。我不明白这与此行为有什么关系?Javascript区分大小写,您可能会遇到一个isOpen/isOpen