-1

私はjavascriptを使用していますが、実行時に複数のdiv(たとえば、5)を作成し、javascript関数を使用して、すべてのdivにテキストが含まれています。これも実行時に設定されます。次に、実行時にすべてのdivを無効にし、下部のページ番号。ユーザーがページ番号をクリックするたびに、そのdivのみが表示され、他のdivが無効になるようにするため、ページ番号としてパラメーターを受け入れる関数を作成しました。ページ番号がクリックされたdivを有効にします。 forループを使用して、他のすべてのdivを無効にします。ここでの問題は、2つの関数を作成したことです。ページ番号をクリックし、bodyonloadでAddingdiv関数を呼び出しました。初めて実行すると、ページのすべてがうまくいきます。

これが発生している理由と、問題を解決するにはどうすればよいですか...

以下は私のスクリプトです。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>    

よろしくお願いします

4

2 に答える 2

3

return false;ページが再読み込みされないように、ページリンクに追加してみてください。

newAnchorDiv.innerHTML += "<a href='' onclick='displayMessage("+(i+1)+");return false;'>"+(i+1)+"</a>&nbsp;";
于 2011-02-28T07:22:55.263 に答える
0

ページリンクがページをリロードしています。1行変更するだけで、スクリプトは正常に機能します。

// 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;";
于 2011-02-28T07:21:23.627 に答える