首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • lytebox效果使用innerhtml更新页面内容后相关js文件失效 [已结贴,结贴人:dofeo]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-02-17 22:05:17 楼主
    不知道大家用过lytebox效果没有,一个类似于lightbox的代码。我用ajax写了段代码,其中用到了lytebox效果。问题来了,如果把ajax函数(例如showajax(),其中用到了innerhtml)加入到body标签中的onload事件,很正常。但如果随后进行了ajax操作,同样的那个showajax()函数,innerhtml出来的代码就无法使用lytebox效果了,不像正常的时候出现动画展开框架,而是像普通的超链接一样跳转到页面去。研究了一整天了,还是没有结果。想到了几种可能:1:head里的lytebox相关js文件失效,于是在showajax()里加入重新加载js文件的语句,不行;2:showajax()里的变量或者函数和lytebox的相关函数冲突,检查后没发现这样的情况;3:难道是lytebox需要使用utf-8字符,于是将xml改为utf-8,一样不行,而且在onload事件中的时候就很正常的,所以排除字符编码的可能。具体的代码没贴上来,比较多,我写了一段类似的代码,请大家查看一下,谢谢。附件是其中用到的js文件和css文件。
    HTML code
    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <script type="text/javascript" language="javascript" src="lytebox.js"></script> <link rel="stylesheet" href="lytebox.css" type="text/css" media="screen" /> <script type="text/javascript"> function onloadjs(){ document.getElementById("aa").innerHTML="<a href=\"http://www.163.com\" rel=\"lyteframe\" title=\"网易网站主页\" rev=\"width: 780px; height: 660px; scrolling: no;\" class=\"thickbox\">网易网站主页(onload出来的代码)</a>"; } function showajax(){ document.getElementById("aa").innerHTML="<a href=\"http://www.163.com\" rel=\"lyteframe\" title=\"网易网站主页\" rev=\"width: 780px; height: 660px; scrolling: no;\" class=\"thickbox\">ajax函数生成的代码</a>"; } </script> <title>无标题文档</title> </head> <body onload="onloadjs();"> <span id="aa"></span> <p><input type="button" onclick="showajax();" value="点击调用ajax函数showajax()"></p> </body> </html>
    该帖包含附件:http://dl2.csdn.net/down4/20080217/17220200915.rar
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-02-18 09:06:501楼 得分:0
    测试下 ,没有你说的问题啊?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-02-18 15:28:262楼 得分:0
    楼上的兄弟,怎么会没有问题呢?你先点击超链接,能正常显示出lytebox效果,然后点击下面的按钮,再点击超链接,lytebox效果就没有了,你再试一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-02-18 15:47:343楼 得分:0
    呵呵,有他说的现象!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaofanku
    • 等级:
    发表于:2008-02-18 17:24:584楼 得分:0
    w3c不推建用innerHTML,可以用DOM来解决!

    我想你的问题是不是在onload上呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-02-18 17:40:015楼 得分:0
    楼上的兄弟,也不是onload的问题,你可以改一下代码,把onload触发事件去掉,直接在body中写入要onloadjs()中插入的html语句,然后再调用showjs(),一样的不成功。我为这个问题都抓狂了,郁闷啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cfam
    • 等级:
    发表于:2008-03-19 16:50:586楼 得分:100
    是你的问题呀
    你要看看js文件呀!就少了一句话了
    function showajax(){
    document.getElementById("aa").innerHTML=" <a href=\"http://www.163.com\"  rel=\"lyteframe\" title=\"网易网站主页\" rev=\"width: 780px; height: 660px; scrolling: no;\" class=\"thickbox\">ajax函数生成的代码 </a>";
    initLytebox(); //要重新初始以下就好了
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-19 22:01:197楼 得分:0
    6楼的正确~~~顶
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-21 01:14:358楼 得分:0
    谢谢,问题解决了,困扰了我一个多月啊
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved