在主体加载上调用javascript函数或直接从脚本调用之间的区别

时间:2011-02-28 06:46:31

标签: javascript onload-event

我正在使用javascript,我在运行时创建多个div(比如5),使用javascript函数,所有div包含一些文本,再次在运行时设置,现在我想在运行时禁用所有div并且页面编号位于底部,这样每当用户点击页码时,只有div应该可见,否则其他应该被禁用,我创建了一个函数,它接受参数,作为页码,我启用div的页面单击数字并使用for循环,我禁用所有其他div,现在我的问题是我创建了两个函数,1st(用于添加div并禁用除1st之外的所有div)并向其写入内容,以及其他用于启用单击页码的div,我在body onload上调用了添加div函数;现在第一次运行时,页面覆盖顺利,但下次当我点击任何页码时,它只是启用并再次启用AddDiv功能,运行并重新启用所有div ..

请回复原因,以及如何解决我的问题......

下面是我的脚本,div的内容将使用Json。

<body onload="JsonScript();">
<script language="javascript" type="text/javascript">
        function JsonScript()
        {
            var existingDiv = document.getElementById("form1");
            var newAnchorDiv = document.createElement("div");
            newAnchorDiv.id = "anchorDiv";

            var list = { "Article": articleList };
            for(var i=0; i < list.Article.length; i++)
            {
                var newDiv = document.createElement("div");
                newDiv.id = "div"+(i+1);
                newDiv.innerHTML = list.Article[i].toString();
                newAnchorDiv.innerHTML += "<a href='' onclick='displayMessage("+(i+1)+")'>"+(i+1)+"</a>&nbsp;";
                existingDiv.appendChild(newDiv);
                existingDiv.appendChild(newAnchorDiv);
            }

            for(var j = 2; j < list.Article.length + 1; j ++)
            {
                var getDivs = document.getElementById("div"+j);
                getDivs.style.display = "none";
            }
        }
       function displayMessage(currentId) {
            var list = {"Article" : articleList}
            document.getElementById("div"+currentId).style.display = 'block';
            for(var i = 1; i < list.Article.length + 1; i++)
            {
                if (i != currentId)
                {
                    document.getElementById("div"+i).style.display = 'none';
                }
            }
        }
    </script>    

谢谢和问候

2 个答案:

答案 0 :(得分:3)

尝试将return false;添加到页面链接以防止重新加载页面。

newAnchorDiv.innerHTML += "<a href='' onclick='displayMessage("+(i+1)+");return false;'>"+(i+1)+"</a>&nbsp;";

答案 1 :(得分:0)

您的页面链接正在重新加载页面。您只需要更改一行,您的脚本就可以了。

// change
newAnchorDiv.innerHTML += "<a href='' onclick='displayMessage("+(i+1)+")'>"+(i+1)+"</a>&nbsp;";

//to
newAnchorDiv.innerHTML += "<a href='#' onclick='displayMessage("+(i+1)+")'>"+(i+1)+"</a>&nbsp;";