我正在查看切换显示和隐藏表列的代码。

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

var States = { };


为什么不需要new operator

此行是否将States col元素.isOpen属性设置为true?

States[col] = {isOpen : true};


我正在弄清楚如何修改此功能,以便可以用Cookie保存此列的状态。即-呈现页面时,默认情况下列设置为无。但是,如果最后一个操作是show column,并且页面已重新渲染,我希望该列仍处于打开状态,而不是返回默认值。

代码:

/**************************************************************************
 *
 * 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;
}

最佳答案

var States = {}


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

States[col] = {isOpen : true}


创建一个新对象,并将其放入States对象的下一个索引。现在,您可以使用例如States.col1.isOpen访问此值。

我注意到您有两种不同的键入方式:IsOpen和isOpen,这可能会给您造成问题。

接下来,您必须使用所需的信息来设置cookie-看一下该URL:
http://www.w3schools.com/JS/js_cookies.asp

希望这可以帮助!

10-06 08:12