Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在黑莓手机上使用JavaScript操作DOM_Javascript_Dom_Blackberry_Browser - Fatal编程技术网

在黑莓手机上使用JavaScript操作DOM

在黑莓手机上使用JavaScript操作DOM,javascript,dom,blackberry,browser,Javascript,Dom,Blackberry,Browser,下面是一段在Blackberry中不起作用的代码(来自更大的代码)。我正在操纵DOM动态插入ul元素 我正在黑莓9700操作系统5.0上测试。我所做的是非常基本的,不需要动脑筋的,并且可以在其他桌面浏览器上使用。我知道Blackberry上的JavaScript支持是不完善的,但这是基本的东西吗 附件是我看到的错误的屏幕截图。JavaScript报告insertBefore函数不存在。但是,我已经测试了它的存在性,并且在我直接附加到主体时可以工作 document.body.insertBefo

下面是一段在Blackberry中不起作用的代码(来自更大的代码)。我正在操纵DOM动态插入ul元素

我正在黑莓9700操作系统5.0上测试。我所做的是非常基本的,不需要动脑筋的,并且可以在其他桌面浏览器上使用。我知道Blackberry上的JavaScript支持是不完善的,但这是基本的东西吗

附件是我看到的错误的屏幕截图。JavaScript报告insertBefore函数不存在。但是,我已经测试了它的存在性,并且在我直接附加到主体时可以工作

document.body.insertBefore( newNode, sibling ); 
不起作用的代码是:

<html>
<head>
    <script type="text/javascript">
    function toggle(){
        _ul = document.getElementById('ul-list');
        if( _ul )
        {
            document.body.removeChild( _ul );
        }else
        {
            ul = document.createElement( "ul" );
            ul.setAttribute('id','ul-list');
            li = document.createElement( 'li' );
            li.appendChild( document.createTextNode("HTML") );
            ul.appendChild( li );

            li = document.createElement( 'li' );
            li.appendChild( document.createTextNode("CSS") );
            ul.appendChild( li );

            li = document.createElement( 'li' );
            li.appendChild( document.createTextNode("JavaScript") );
            ul.appendChild( li );

            li = document.createElement( 'li' );
            li.appendChild( document.createTextNode("XML") );
            ul.appendChild( li );

            parent = document.getElementById('container');
            sibling = document.getElementById('para');
            try
            {
                func = parent.insertBefore;
                if( !func )
                {
                    alert( "Function doesn't exist!" );
                }
                parent.insertBefore( ul, sibling );
            }catch( err )
            {
                alert( err );
            }


        }

    }
    </script>
<style type="text/css">

</style>
</head>
<body>
    <div id ="container">

        <p id ="para" >Display this link list as a horizontal menu:</p>
        <input type="button" name="Show Now!" value ="Toggle" onClick=" toggle();"/>
    </div>
</body>
</html>

函数切换(){
_ul=document.getElementById('ul-list');
如果(_ul)
{
文件.body.removeChild(_ul);
}否则
{
ul=document.createElement(“ul”);
ul.setAttribute('id','ul-list');
li=document.createElement('li');
li.appendChild(document.createTextNode(“HTML”);
ul.儿童(li);
li=document.createElement('li');
li.appendChild(document.createTextNode(“CSS”);
ul.儿童(li);
li=document.createElement('li');
appendChild(document.createTextNode(“JavaScript”);
ul.儿童(li);
li=document.createElement('li');
appendChild(document.createTextNode(“XML”);
ul.儿童(li);
parent=document.getElementById('container');
同级=document.getElementById('para');
尝试
{
func=parent.insertBefore;
if(!func)
{
警报(“功能不存在!”);
}
父母。插入前(ul,兄弟姐妹);
}捕捉(错误)
{
警惕(err);
}
}
}
将此链接列表显示为水平菜单:


我确认这是Blackberry 5.0(在设备9000和9700上)中DOM实现中的一个错误

解决方法是,如果必须动态插入或删除图元,则将其直接放置在主体下方。有效的代码是:

<html>
    <head>
    <script type="text/javascript">
    function toggle(){
        _ul = document.getElementById('ul-list');
        if( _ul )
        {
            document.body.removeChild( _ul );
        }else
        {
            ul = document.createElement( "ul" );
            ul.setAttribute('id','ul-list');
            li = document.createElement( 'li' );
            li.appendChild( document.createTextNode("HTML") );
            ul.appendChild( li );

            li = document.createElement( 'li' );
            li.appendChild( document.createTextNode("CSS") );
            ul.appendChild( li );

            li = document.createElement( 'li' );
            li.appendChild( document.createTextNode("JavaScript") );
            ul.appendChild( li );

            li = document.createElement( 'li' );
            li.appendChild( document.createTextNode("XML") );
            ul.appendChild( li );

            parent = document.body;
            sibling = document.getElementById('para');
            try
            {
                func = parent.insertBefore;
                if( !func )
                {
                    alert( "Function doesn't exist!" );
                }
                parent.insertBefore( ul, sibling );
            }catch( err )
            {
                alert( err );
            }


        }

    }
   </script>
   <style type="text/css">

   </style>
   </head>
    <body>
       <p id ="para" >Display this link list as a horizontal menu:</p>
       <input type="button" name="Show Now!" value ="Toggle" onClick=" toggle();"/>
    </body>
</html>

函数切换(){
_ul=document.getElementById('ul-list');
如果(_ul)
{
文件.body.removeChild(_ul);
}否则
{
ul=document.createElement(“ul”);
ul.setAttribute('id','ul-list');
li=document.createElement('li');
li.appendChild(document.createTextNode(“HTML”);
ul.儿童(li);
li=document.createElement('li');
li.appendChild(document.createTextNode(“CSS”);
ul.儿童(li);
li=document.createElement('li');
appendChild(document.createTextNode(“JavaScript”);
ul.儿童(li);
li=document.createElement('li');
appendChild(document.createTextNode(“XML”);
ul.儿童(li);
parent=document.body;
同级=document.getElementById('para');
尝试
{
func=parent.insertBefore;
if(!func)
{
警报(“功能不存在!”);
}
父母。插入前(ul,兄弟姐妹);
}捕捉(错误)
{
警惕(err);
}
}
}
将此链接列表显示为水平菜单:

更改是内容直接位于主体下,而不是div“container”的子项。我相信这在Blackberry 6.0+中不是问题,它使用WebKit渲染引擎。将需要使用此错误浏览器,直到它们不受支持为止