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 一次,但如果你能弄清楚如何做到这一点,你会看到它第一次加载正常,但是当你折叠该部分并尝试重新打开时它,它不会工作。

如果解决此问题的唯一方法是使用 jquery,我不介意沿着这条路线走。

4

3 回答 3

1

它在其他浏览器中工作吗?

能用 jsfiddle.net来获取当前的功能吗,因为在这样的代码拍摄中很难理解问题的上下文......

有很多建议:)但我有强烈的感觉

 document.getElementById('method') 

返回错误元素或此元素未放置在 mainHolder 中

更新在 jsfiddle 中查看示例后

对错误元素的感觉是正确的:) 将“方法”更改为“信息”

document.getElementById('method') -> document.getElementById('info')
于 2013-10-07T22:10:14.677 回答
0

我认为您想在 myFunc 中使用 document.getElementById(' content ') 而不是 document.getElementById('method') 。

于 2013-10-07T22:18:36.630 回答
0

我真的看不出这段代码有什么问题。然而,你可以探索的一个猜测是改变这条线 content.style.display = "none";

可能是任何显示您的 html(webview 或浏览器本身)的内容都可能正在擦除 elemtns 的内容,因为显示设置为none

于 2013-10-07T22:23:22.603 回答