难以在JavaScript中维护变量的值

时间:2011-04-21 04:59:49

标签: javascript global-variables

我在javascript中编写了两个单独的函数,我创建了一个全局变量。 第一个函数设置全局变量的值,第二个函数使用该全局变量来检查条件,但它不起作用。

这是我的代码。

var flag = 1;

function setSelection(){

    for (index=0; index < top.parent.frmRadio.view.length; index++) {
        if (top.parent.frmRadio.view[index].checked) {
            var radioValue = top.parent.frmRadio.view[index].value;

            if(radioValue == "graph"){
                flag = 1;
                top.parent.test2.innerHTML = flag;
            }
            else{
                flag = 0;
                top.parent.test2.innerHTML = flag;

            }

        }
    }
}


function setFileName(name){
    var fileName = name;
//  document.getElementById("body").innerHTML = fileName;
    document.getElementById("body").innerHTML = flag;
    if(flag == 1){
        top.parent.frame2.location = fileName;
        document.getElementById("body").innerHTML = fileName;
    }
    else{
        top.parent.frame2.location = "simpletree.html";
        document.getElementById("body").innerHTML = "simpletree.html";
    }


//  parent.frame2.location = fileName;
} 

这两个函数都被不同的地方调用。单击单选按钮时调用第一个方法,单击列表时调用第二个方法。

1 个答案:

答案 0 :(得分:0)

你的全局变量很好(在全局变量很好的情况下;强烈建议避免使用它们。)

我认为问题出现在setFileName函数中,你有一些非常奇怪的操作。一些评论:

function setFileName(name){
    var fileName = name;
//  document.getElementById("body").innerHTML = fileName;
    document.getElementById("body").innerHTML = flag;
//  ^-- Do you *really* have an element on the page with the id="body"?
//      This will not change the `body` element of the page (unless you've given it that id).
    if(flag == 1){
        top.parent.frame2.location = fileName;
        document.getElementById("body").innerHTML = fileName;
//      ^--- This will replace the content of the element with id="body" with
//           the text of the filename (it will not retrieve the file)
    }
    else{
        top.parent.frame2.location = "simpletree.html";
        document.getElementById("body").innerHTML = "simpletree.html";
//      ^--- This will replace the contents of the element with id="body"
//           with the text "simpletree.html", it will not retrieve the file
    }


//  parent.frame2.location = fileName;
} 

设置元素的innerHTML会将其内容更改为您指定的实际文本。它不会加载页面并将页面内容放在那里。为此,您必须使用iframe或使用ajax加载页面内容(来自同一来源的服务器),然后分配生成的文本/标记。