3

現在、次のように div のコンテンツを非表示および表示しています。

var header = null;
        var content = null;
        var mainHolder = null;
        var expandCollapseBtn = null;
        var heightValue = 0;

        header = document.getElementById("header");
        content = document.getElementById("content");
        mainHolder = document.getElementById("mainHolder");
        expandCollapseBtn = header.getElementsByTagName('img')[0];

        heightValue = mainHolder.offsetHeight;

        header.addEventListener('click', handleClick, false);
        mainHolder.addEventListener('webkitTransitionEnd',transitionEndHandler,false);

        function handleClick() {
            if(expandCollapseBtn.src.search('collapse') !=-1)
            {
                mainHolder.style.height = "26px";
                content.style.display = "none";
            }
            else
            {
                mainHolder.style.height = heightValue + "px";
            }
        }

    function transitionEndHandler() {
        if(expandCollapseBtn.src.search('collapse') !=-1)
        {
            expandCollapseBtn.src = "expand1.png";
        }
        else{
            expandCollapseBtn.src = "collapse1.png";
            content.style.display = "block";
        }
    }

コンテンツが静的であればこれで問題ありませんが、そのように div を動的に設定しようとしています。

これは iPhone アプリケーションから呼び出され、div に文字列を設定します。

var method;

            function myFunc(str)
            {
                method = str;
                alert(method);
                document.getElementById('method').innerHTML = method;
            }

文字列を変数メソッドにグローバルに保存します。私が抱えている問題は、折りたたんだばかりの div を展開しようとすると、そこには何もないことです。var に保存されている情報を使用して、再度展開する前に div を再設定する方法はありますか? 関数のように挿入しようとしましたが、うまくいきません。

誰にもアイデアはありますか?

複製するには:

これがjsfiddleです。jsfiddle.net/6a9B3 ここにテキストを入力すると

それはうまくいきます。このjsfiddleで文字列を使用してmyfuncを1回だけ呼び出す方法がわかりませんが、その方法を理解できれば、最初は正常にロードされることがわかりますが、セクションを折りたたんで再度開こうとするとそれは、うまくいきません。

これを修正する唯一の方法が jquery を使用することである場合、そのルートをたどってもかまいません。

4

3 に答える 3

1

他のブラウザでは動作していますか?

このようなコードシュートの問題のコンテキストを理解するのは難しいため、現在の機能についてjsfiddle.netを使用できますか ...

たくさんの提案があります:)しかし、私はそれを強く感じています

 document.getElementById('method') 

間違った要素を返すか、この要素が mainHolder 内に配置されていません

update : jsfiddle でサンプルを確認した後

間違った要素についての感覚は正しかった:) 'method' を 'info' に変更

document.getElementById('method') -> document.getElementById('info')
于 2013-10-07T22:10:14.677 に答える