四月, 2009 的存档

通用标签切换封装JS[0824更新]

展开/收缩

script部分:

/**************************************

*Filename:      setTab标签切换js

*Version:       2.0.0(2009-08-24)

*Author:        jasy[TMUED]


参数说明:

id1:标签切换父容器的ID

tag1:标签切换的相应标签

tabclass:标签选中状态的class

id2:切换内容的父容器ID

tag2:切换内容的相应子标签

changeEvent:标签切换的触发事件(值为click时为点击切换,值为hover时为鼠标经过切换)

changeTime:是否定时切换changeTime值即为定时切换间隔时间(毫秒为单位),无则不定时切换

isClick:是否单击开关内容区(可选true或false值);

isClickAll:是否单独开关内容区(可选true或false值);

fadeTime:是否渐显效果,值为渐显速度(毫秒为单位).无值则为无渐显动画;

(提示:IE下id2的tag2须CSS触发IE的layout属性alpha值才有效,例如设置zoom:1.)

isReturnFalse:是否return false;

isConIdNum:是否内容区以id+数字下标的方式[下标从1开始].

onNum:设置默认第几个标签打开

isOpenOne:是否默认打开一个,false则为全关闭

***************************************/


//标签切换主函数
function j_setTab(tabId, tag1, tabclass, conId, tag2, changeEvent, changeTime, isClick, isClickAll, fadeTime, isReturnFalse, isConIdNum, onNum ,isOpenOne) {

onNum–;

var tli = document.getElementById(tabId).getElementsByTagName(tag1);

if (!isConIdNum) {

var cli = document.getElementById(conId).getElementsByTagName(tag2);

}


var opaStep = 0.1;

var isScroll = true;
//初始化设置所有

for (i = 0; i < tli.length; i++) {

tli[i].className = ”;

if (isConIdNum) {

document.getElementById(conId + (i+1)).style.display = “none”;

} else {

cli[i].style.display = “none”;

}

}

//设置当前

if(isOpenOne){

tli[onNum].className = tabclass;

}
/*    setTabCon(onNum);*/

if (isConIdNum) {

document.getElementById(conId + (onNum+1)).style.display = “block”;

} else {

if(isOpenOne){

cli[onNum].style.display = “block”;

}

}
    //遍历元素执行函数

for (i = 0; i < tli.length; i++) {

tli[i].value = i;

tli[i].onmouseout = function() {

isScroll = true;

}

tli[i].onmouseover = function() {

isScroll = false;

}

if (changeEvent == “click”) {

tli[i].onclick = function() {

setTabCon(this.value);

if (isReturnFalse) {

return false;

}

}

} else if (changeEvent == “hover”) {

tli[i].onmouseover = function() {

setTabCon2(this.value);

isScroll = false;

}

tli[i].onclick = function() {

setTabCon(this.value);

if (isReturnFalse) {

return false;

}

}

}

}

//设置标签标题与内容切换[对应click事件]

function setTabCon(n) {

if (isClickAll) {

tli[n].className = (tli[n].className == tabclass) ? “”: tabclass;

if (fadeTime) {

if (isConIdNum) { (document.getElementById(conId + (n+1)).style.display == “block”) ? fadeOut(document.getElementById(conId + (n+1))) : fadeIn(document.getElementById(conId + (n+1)));

} else { (cli[n].style.display == “block”) ? fadeOut(cli[n]) : fadeIn(cli[n]);

}

} else {

if (isConIdNum) {

document.getElementById(conId + (n+1)).style.display = (document.getElementById(conId + (n+1)).style.display == “block”) ? “none”: “block”;

} else {

cli[n].style.display = (cli[n].style.display == “block”) ? “none”: “block”;

}

}

} else if (isClick) {

for (j = 0; j < tli.length; j++) {

if (n == j) {

tli[j].className = (tli[j].className == tabclass) ? “”: tabclass;

} else {

tli[j].className = “”;

}

if (isConIdNum) {

if (fadeTime) {

if (n == j) {

if (document.getElementById(conId + (j+1)).style.display == “none”) {

fadeIn(document.getElementById(conId + (j+1)));

} else {

fadeOut(document.getElementById(conId + (j+1)))

}

} else {

document.getElementById(conId + (j+1)).style.display = “none”;

/*fadeOut(document.getElementById(conId+j));*/

}

} else {

if (n == j) {

document.getElementById(conId + (j+1)).style.display=(document.getElementById(conId + (j+1)).style.display == “none”)?’block’:'none’;

} else {

document.getElementById(conId + (j+1)).style.display = “none”;

/*fadeOut(cli[j]);*/

}

}

} else {

if (fadeTime) {

if (n == j) {

if (cli[j].style.display == “none”) {

fadeIn(cli[j]);

} else {

fadeOut(cli[j])

}

} else {

cli[j].style.display = “none”;

/*fadeOut(cli[j]);*/

}

} else {

if (n == j) {

cli[j].style.display=(cli[j].style.display == “none”)?’block’:'none’;

} else {

cli[j].style.display = “none”;

/*fadeOut(cli[j]);*/

}

}

}

}

onNum = n;

} else {

for (j = 0; j < tli.length; j++) {

tli[j].className = n == j ? tabclass: “”;

if (isConIdNum) {

if (fadeTime) {

if (n == j) {

if (document.getElementById(conId + (j+1)).style.display == “none”) {

fadeIn(document.getElementById(conId + (j+1)));

}

} else {

document.getElementById(conId + (j+1)).style.display = “none”;

/*fadeOut(document.getElementById(conId+(j+1)));*/

}

} else {

document.getElementById(conId + (j+1)).style.display = n == j ? “block”: “none”;

}

} else {

if (fadeTime) {

if (n == j) {

if (cli[j].style.display == “none”) {

fadeIn(cli[j]);

}

} else {

cli[j].style.display = “none”;

/*fadeOut(cli[j]);*/

}

} else {

cli[j].style.display = n == j ? “block”: “none”;

}

}

}

onNum = n;

}

}

//设置标签标题与内容切2[对应hover事件]

function setTabCon2(n) {

for (j = 0; j < tli.length; j++) {

tli[j].className = n == j ? tabclass: “”;

if (isConIdNum) {

if (fadeTime) {

if (n == j) {

if (document.getElementById(conId + (j+1)).style.display == “none”) {

fadeIn(document.getElementById(conId + (j+1)));

}

} else {

document.getElementById(conId + (j+1)).style.display = “none”;

/*fadeOut(document.getElementById(conId+(j+1)));*/

}

} else {

document.getElementById(conId + (j+1)).style.display = n == j ? “block”: “none”;

}

} else {

if (fadeTime) {

if (n == j) {

if (cli[j].style.display == “none”) {

fadeIn(cli[j]);

}

} else {

cli[j].style.display = “none”;

/*fadeOut(cli[j]);*/

}

} else {

cli[j].style.display = n == j ? “block”: “none”;

}

}

}

onNum = n;

}

  //设置透明度

function setAlpha(obj, opa) {

document.all ? obj.style.filter = “Alpha(opacity=” + opa * 100 + “)”: obj.style.opacity = opa;

}

  //渐显

function fadeIn(obj) {

obj.style.display = “block”;

var opa = 0;

function setFadeIn() {

if (opa < 1) {

setAlpha(obj, opa);

opa += opaStep;

setTimeout(setFadeIn, fadeTime);

}

}

setFadeIn();

}

//渐隐

function fadeOut(obj) {

var opa = 1;

function setFadeOut() {

if (opa > 0) {

setAlpha(obj, opa);

opa -= opaStep;

setTimeout(setFadeOut, fadeTime);

} else {

obj.style.display = “none”;

}

}

setFadeOut();

}

  //定时切换

if (changeTime) {

function setTiming() {

if (isScroll) {

setTabCon2(onNum);

onNum++;

onNum = (onNum == tli.length) ? 0 : onNum;

}

setTimeout(setTiming, changeTime);

}

setTiming();

}

}


页面HTML调用部分·[示例]:
<script type=”text/javascript”> setTab(‘photo-tab’, ‘li’, ‘on’, ‘photo-tab’, ‘div’,'hover’,2000,false,false,20,false,false);</script>

JavaScript判断浏览器类型及版本

展开/收缩

<script type=”text/javascript”>
        var Sys = {};
        var ua = navigator.userAgent.toLowerCase();
        if (window.ActiveXObject)
             Sys.ie = ua.match(/msie ([\d.]+)/)[1]
        else if (document.getBoxObjectFor)
             Sys.firefox = ua.match(/firefox\/([\d.]+)/)[1]
        else if (window.MessageEvent && !document.getBoxObjectFor)
             Sys.chrome = ua.match(/chrome\/([\d.]+)/)[1]
        else if (window.opera)
             Sys.opera = ua.match(/opera.([\d.]+)/)[1]
        else if (window.openDatabase)
             Sys.safari = ua.match(/version\/([\d.]+)/)[1];
      
       //以下进行测试
        if(Sys.ie) document.write(‘IE: ‘+Sys.ie);
        if(Sys.firefox) document.write(‘Firefox: ‘+Sys.firefox);
        if(Sys.chrome) document.write(‘Chrome: ‘+Sys.chrome);
        if(Sys.opera) document.write(‘Opera: ‘+Sys.opera);
        if(Sys.safari) document.write(‘Safari: ‘+Sys.safari);

    </script>

js获取光标位置,兼容各浏览器

展开/收缩

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>js获取光标位置</title>
<script type=”text/javascript”>
/**
* 获取光标所在的字符位置
* @param obj 要处理的控件, 支持文本域和输入框
* @author hotleave
*/

function getPosition(obj){
//alert(obj.tagName);
var result = 0;
if(obj.selectionStart){ //非IE浏览器
   result = obj.selectionStart
}else{ //IE
   var rng;
   if(obj.tagName == “TEXTAREA”){ //如果是文本域
    rng = event.srcElement.createTextRange();
    rng.moveToPoint(event.x,event.y);
   }else{ //输入框
    rng = document.selection.createRange();
   }
   rng.moveStart(“character”,-event.srcElement.value.length);
   result = rng.text.length;
}
return result;
}

function getValue(obj){
     var pos = getPosition(obj);
//alert(pos);
alert(obj.value.substr(0,pos)+” [这里是添加的内容] “+obj.value.substr(pos,obj.value.length));
}
</script>
</head>
<body>
<input type=”text” value=”你好,Amethyst!” onmouseup=”getValue(this)” style=”display:block”>
<textarea rows=”6″ cols=”60″ onmouseup=”getValue(this)”>Amethyst, 你好.</textarea>
</body>
</html>

让IE8使用IE7进行渲染

展开/收缩

X-UA-Compatible是针对ie8新加的一个设置,对于ie8之外的浏览器是不识别的,这个区别与 content=”IE=7″在无论页面是否包含<!DOCTYPE>指令,都像是使用了 Windows Internet Explorer 7的标准模式。而content=”IE=EmulateIE7″模式遵循<!DOCTYPE>指令。对于多数网站来说,它是首选的兼容性模式。

目前IE8尚在测试版中,所以为了避免制作出的页面在IE8下面出现错误,建议直接将IE8使用IE7进行渲染。也就是直接在页面的header的meta标签中加入如下代码:

   <meta http-equiv=”X-UA-Compatible” content=”IE=7″ />

这样我们才能使得页面在IE8里面表现正常!

>>
后台管理 github RSS 微博 简历
RSS订阅