模拟TAB 采用 attachEvent 遇到的IE兼容问题

<!DOCTYPE>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>div+css+js模拟TAB</title>
<style>
body{margin:0;padding:0; background:#CCCCCC}
a{text-decoration:none}
#tabnav ul{padding:0;margin:0}
#tabnav li{float:left;list-style:none; padding:10px;}
#tabnav li.on{display:inline-block;background:#fff;}
#tabcon{ clear:both; background:#009933; padding:10px;text-align:left;color:#fff}
.hide {display:none}
</style>
</head> 

<body>
<div id="tab">
<div id="tabnav">
<ul>
<li class="on"><span>TAB1111</span></li>  <!--这里弄成  <li class="on"><span>TAB1111</span></li>  就不可以了 -->
<li>TAB2222</li>
<li>TAB3333</li>
<li>TAB4444</li>
</ul>
</div>
<div id="tabcon">
<div>
这里是内容111<br>
这里是内容111<br>
这里是内容111<br>
</div>
<div class="hide">
这里是内容222<br>
这里是内容222<br>
这里是内容222<br>
</div>
<div class="hide">
这里是内容333<br>
这里是内容333<br>
这里是内容333<br>
</div>
<div class="hide">
这里是内容444<br>
这里是内容444<br>
这里是内容444<br>
</div>
</div>
</div>
<script>
function get_id(id) {
    return (typeof id == "string") ? document.getElementById(id) : id;
}

function changeTab(tab_id, con_id, on, type) {
    var tab_li = get_id(tab_id).getElementsByTagName(‘li‘);
    var con_div = get_id(con_id).getElementsByTagName(‘div‘);

    for (var i = 0; i < tab_li.length; i++) {
        tab_li[i].index = i;
        if (document.all) {
            //alert(1)

            tab_li[i].attachEvent(‘on‘ + type, currTab);

        } else {

            tab_li[i].addEventListener(type, currTab, false);
        }
    }

    function currTab() {
        hideAll();
        if (document.all) {
            alert(i) // 4
            // alert(this.event.srcElement.innerHTML)  // 此处的this传过来的不是tab_li[i]
            // alert(this.event.srcElement.index)      // 只有当点击的元素是 li 时,才有index值。

            //this.event.srcElement.className = on;
            //con_div[this.event.srcElement.index].className = ‘‘;

            // this.className = on;
            // con_div[this.index].className = ‘‘;

        } else {
            this.className = on;
            con_div[this.index].className = ‘‘;
        }
    }

    function hideAll() {
        for (var i = 0; i < con_div.length; i++) {
            con_div[i].className = ‘hide‘;
            tab_li[i].className = ‘‘;
        }
    }
}

changeTab("tabnav", "tabcon", "on", "click");
// changeTab("tabnav", "tabcon", "on" ,"mouseover");
</script> 

</body>
</html>
时间: 2024-10-24 14:46:39

模拟TAB 采用 attachEvent 遇到的IE兼容问题的相关文章

模拟TAB键

模拟TAB键 (2013/6/7 22:35:29) SelectNext(ActiveControl,True,True); 屏蔽Alt+F4关闭键 (2013/6/7 22:35:39) 启动某些程序,使用Alt+F4键,可以快速的退出程序,可是如果是做一个屏幕保护程序的话,那么这个方便将成为绊脚石,所以有必要令该功能键失去作用,所以我们使用了窗体的OnKeyDown事件来检测击键: procedure TForm1.FormKeyDown(Sender: TObject; var Key:

530 vue 基础语法范例汇总 一个模拟tab显示

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Document</title> <script  src="vue.js"></script> <style type="text/css"> .act{color:red;

[工具推荐]005.Axure RP Pro 7.0模拟C#TAB控件

有一次,主管安排我写一个项目的原型,但是项目中涉及到了Tab控件,在Axure中的控件中找了一番,没有找着Tab控件.那么我们只能换种法子来实现它了,我们用到了Dynamic Panel来模拟. 1.首先我们拖动Dynamic Panel到我们的页面中.如下 2.双击Dynamic panel,然后跟据你要创建的Tab页面填写 3.然后点击面板状态下面的第五个按钮,进行所有控件编辑 4.然后拉一个Rectangle和两个Button Shape到页面1上面 5.选中Button Shape右键-

添加和移除事件处理兼容各浏览器的封装(带详细注释)

//事件处理兼容各种浏览器,采用能力检测方法,所谓能力检测,就是有能力就做,没有能力就不做 //定义一个处理事件的对象,兼容各种浏览器,dom2级事件处理和ie事件,如果这两个事件都不兼容,就采用dom0级处理 var eventUtil ={ addEvent:function(element,type,handler){ if (element.addEventListener) { //非IE浏览器采用dom2级事件处理,type为事件类型如:click,handler为事件处理函数,fa

使用vue2.0 vue-router vuex 模拟ios7操作

其实你也可以,甚至做得更好... 首先看一下效果:用vue2.0实现SPA:模拟ios7操作 与 通讯录实现 github地址是:https://github.com/QRL909109/ios7 如果您觉得可以,麻烦给一个star,支持我一下. 之前接触过Angular1.0,React,都只是学点入门,但对于Vue却觉得很容易上手,不止入门简单,插件也是很丰富的,脚手架也是便利的很... 项目分析: 1.首屏滑动解锁,并能移动小圆点 2.主屏幕  长按图标抖动,删除图标,点击小圆点的主屏幕

触屏Tap模拟事件

触屏的click因为有双击判断所以有200ms的延迟,zepto里的touch.js兼容不好所以tap也没法直接用. gibhub上有个fastclick太大了. 自己用touched写个简单的模拟tap事件,并在内部加上e.preventDefault();阻止系统默认行为. /* 模拟Tab事件 @obj:元素 @callback:回调函数 */ function Tap(obj, callback){ document.body.addEventListener('touchend',fu

对浏览器兼容问题的解决方案

目前,最为流行的浏览器共有五个:分别是ie,Edge浏览器(属于微软),火狐,谷歌(chrome)Safari和Opera五大浏览器. Trident内核:IE ,360,,猎豹,百度: Gecko内核:火狐----------->这个浏览器内核是开源的浏览器内核,插件非常多,-------------->缺点:打开速度慢(加载flash插件)<-----额外介绍----->. Presto内核:Opera7及以上版本 Webkit:遨游,苹果 ,symbian:Safari.Ch

事件捕获、冒泡、绑定、赋值、委托、兼容、滚轮

clientX/Y           可视区的鼠标坐标                  全兼容 offsetX/Y           鼠标坐标到物体边框的距离    IE+Chrome pageX/Y             页面                                    高级 浏览器 screenX/Y           屏幕                                    全兼容(没用) var e =  evt || window.

网易新闻控件的创建,scrollView和viewGroup的学习,和up事件后模拟页面回到固定位置

1.viewGroup可以添加控件,也可以用<include layout="@layout/name">添加xml布局文件,在本次实验中将新闻的menu(scrollView布局文件)和正文(mainnews)加入到继承ViewGroup的控件中,但不明白为什么scrollview的宽度和下滑属性没了.导致不能下滑. 一旦发现空间几部分组成就继承viewgroup ,然后重写onmeasure方法,在里面测量所有的孩子,然后重写layout方法布局这些孩子view的位置.