`
fantasy
  • 浏览: 513857 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

一些公用的javascript函数(希望大家一起开源)

阅读更多
/** 
* 全选的所有指定名称的checkbox
*@state 全选的checkbox的状态
*@name   表格中的所有checkbox的名称
*@author fangtf
*@type void
*/
function selectAll(state,name) {
	var ids = document.getElementsByName(name);
	for (var i = 0; i < ids.length; i++) 
	{		
			ids[i].checked = state;
	}
}


/** 
* 全选的所有指定id名称的同名checkbox
*@state 全选的checkbox的状态
*@name   表格中的所有checkbox的名称
*@name   表格中的所有checkbox的id
*@author fangtf
*@type void
*/
function selectAllCheckboxByID(state,name,id) {
	var ids = document.getElementsByName(name);
	for (var i = 0; i < ids.length; i++) 
	{		
			if(ids[i].id == id)
			{
				ids[i].checked = state;
			}
			
	}
}

/** 
* 全选页面上所有的checkbox
*@state 全选的checkbox的状态
*@author fangtf
*@type void
*/
function selectAlls(state) 
{
	var inputs = document.getElementsByTagName("input");
	for(var i =0;i<inputs.length;i++)
	{
		if(inputs[i].type == "checkbox")
		{
			inputs[i].checked =state; 
		}
	}

}


/**
*得到鼠标所单击的行
*@type Object
*/
function GetRow(oElem) {
	while (oElem) {
		if (oElem.tagName.toLowerCase() == "tr" && oElem.parentElement.tagName.toLowerCase() == "tbody") {
			return oElem;
		}
		if (oElem.tagName.toLowerCase() == "table" || oElem.tagName.toLowerCase() == "th") {
			return false;
		}
		oElem = oElem.parentElement;
	}
}

/** 
* 全选当前行的checkbox
*@state 全选的checkbox的状态
*@author fangtf
*@type void
*/
function selectRowCheckbox(state)
{
  var row = GetRow(window.event.srcElement);
  var cells = row.childNodes; 
  for(var i=0;i<cells.length;i++)
  {
      var cell = cells[i].childNodes[0];
  	 if(cell.tagName == "INPUT")
  	 {
  	 	cell.checked = state;
  	 }
  }
}

/** 
*选中指定值的Radio
*如:有两个radio,
*第一个的name="ids",value="1"
*第二个的name="ids",value="2"
*调用方法selectRadio("ids","1");
*那么数值为1的Radio将被选中
*@name radio的名称
*@value radio的值
*@author fangtf
*@type void
*/
function selectRadio(name,value) {
    var radioObject = document.getElementsByName(name);
    if(value === "")
    {
    	radioObject[0].checked = true;
    	return;
    }
	for (var i = 0; i < radioObject.length; i++) 
	{
		if(radioObject[i].value == value)
		{
			radioObject[i].checked = true;
			break;
		}
		
	}
}


/** 
*选中指定值的checkbox
*如:有两个checkbox,
*第一个的name="ids",value="1"
*第二个的name="ids",value="2"
*第三个的name="ids",value="3"
*调用这个方法selectCheckbox("ids","1,2")那么数值为1,2的checkbox将被选中
*                
*@name 要选中的checkbox数组的名称
*@value 判断时候选中的值
*@author fangtf
*@type void
*/
function selectCheckbox(name,value) {
    var checkObject = document.getElementsByName(name);
    var values = value.split(",");
    for(var j = 0; j < values.length; j++)
    {
    	for (var i = 0; i < checkObject.length; i++) 
		{
			if(checkObject[i].value == values[j])
			{
				checkObject[i].checked = true;
				break;
			}
		}
    }
	
}

/** 
*选中指定值的select
*如:有一个名称为user的select
*<option value="0"></option>
*<option value="1"></option>
*调用这个方法selectOption("user","0")那么选项为0的选项就被选中
*               
*@name  String  select的名称
*@value String  判断时候选中的值
*@author fangtf
*@type void
*/
function selectOption(name,value)
{
     document.getElementsByName(name)[0].value=value;

}
分享到:
评论
18 楼 fantasy 2007-04-18  
loocoo 写道

/**    
* 全选的所有指定id名称的同名checkbox   
*@state 全选的checkbox的状态   
*@name   表格中的所有checkbox的名称   
*@name   表格中的所有checkbox的id   
*@author fangtf   
*@type void   
*/   
function selectAllCheckboxByID(state,name,id) {   
    var ids = document.getElementsByName(name);   
    for (var i = 0; i < ids.length; i++)    
    {          
            if(ids[i].id == id)   
            {   
                ids[i].checked = state;   
            }   
               
    }   
} 


这个没有意思吧,html里的id应该是唯一的
id在原则上是唯一的,但是还是可以定义多个相同id的组件。
17 楼 loocoo 2007-04-16  

/**    
* 全选的所有指定id名称的同名checkbox   
*@state 全选的checkbox的状态   
*@name   表格中的所有checkbox的名称   
*@name   表格中的所有checkbox的id   
*@author fangtf   
*@type void   
*/   
function selectAllCheckboxByID(state,name,id) {   
    var ids = document.getElementsByName(name);   
    for (var i = 0; i < ids.length; i++)    
    {          
            if(ids[i].id == id)   
            {   
                ids[i].checked = state;   
            }   
               
    }   
} 


这个没有意思吧,html里的id应该是唯一的
16 楼 A_Bing 2007-04-15  
收藏下.. js 是一门很有意思的语言
15 楼 wjtang 2006-12-21  
Thank very much
14 楼 fantasy 2006-12-18  
j2eeqk 写道
这些非常简单的一般性的算法我觉得贴在这里意义不大。
其实很多地方你都没有考虑到效率的问题,而且很多function对象,有时候并不需要按照你函数规定的形式参数来传值。举个最简单的例子,你有一组checkbox,然后用'1,2'一串值,让对应的checkbox符合这个值的被选中。你考虑过你的循环执行次数吗?是先执行'1,2'.split后的循环还是先开始checkbox组的循环?每次循环后你考虑过用slice来剔除掉已经循环过的元素提高效率吗?

首先感谢你的回帖!
接下来回答你的问题。
首先我贴这个帖子的目的是为了避免大家重复造轮子,这个也是开源的目的之一,而且有你这样好的回帖也是意义之一,集思广益。
至于效率方面,我很赞同你的说法,我考虑得不是很全面。
13 楼 j2eeqk 2006-12-16  
这些非常简单的一般性的算法我觉得贴在这里意义不大。
其实很多地方你都没有考虑到效率的问题,而且很多function对象,有时候并不需要按照你函数规定的形式参数来传值。举个最简单的例子,你有一组checkbox,然后用'1,2'一串值,让对应的checkbox符合这个值的被选中。你考虑过你的循环执行次数吗?是先执行'1,2'.split后的循环还是先开始checkbox组的循环?每次循环后你考虑过用slice来剔除掉已经循环过的元素提高效率吗?
12 楼 xlincn 2006-12-07  
常用的:
var area_e = document.getElementById("table_area");

var areaArray =new Array("安徽","北京","福建","甘肃","广东","广西","贵州","海南","河北","河南","黑龙江","湖北","湖南","吉林","江苏","江西","辽宁","内蒙古","宁夏","青海","山东","山西","陕西","上海","四川","天津","西藏","新疆","云南","浙江","重庆");

area_tbody_e = document.createElement("tbody");

    for(i=0;i<areaArray.length;i++){
	tr_e= document.createElement("tr");

	td_e = document.createElement("td");

    td_e.innerHTML ="<input type='checkbox' name='area' value='"+areaArray[i]+"'>"+areaArray[i]+"</input>" ;

	tr_e.appendChild(td_e);

	area_tbody_e.appendChild(tr_e);

    }
area_e.appendChild(area_tbody_e);
11 楼 shuren 2006-12-04  
fantasy 写道
moogle 写道
function selectOption(name,value)   
{   
    var options = document.getElementsByName(name)[0].options;   
    for (var i = 0; i < options.length; i++)    
    {   
        if(options[i].value === value)   
        {   
            options[i].selected = true;    
            break;   
        }   
    }   
  
}  

可以修改为:
function selectOption(name,value)   
{   
   document.getElementsByName(name).value=value;  
}  

可以达到同样的效果,直接指定select选中对应的值



对!已经修改过来了!


应该改为
function selectOption(name,value)  
{  
   document.getElementsByName(name)[0].value=value; 
}
10 楼 logicgate 2006-12-04  
Object.prototype.clone = function()
{
	if(typeof(this) != "object")
		return this;

	var $cloneDepth = (arguments.length >= 1) ? ((isNaN(parseInt(arguments[0]))) ? null : parseInt(arguments[0])) : null;
	if($cloneDepth)
		$cloneDepth = ($cloneDepth <= 0) ? null : $cloneDepth;

	var $cloneObject = null;
	var $thisConstructor = this.constructor;
	var $thisConstructorPrototype = $thisConstructor.prototype;

	if($thisConstructor == Array)
		$cloneObject = new Array();
	else if($thisConstructor == Object)
		$cloneObject = new Object();
	else
	{
		try
		{
			$cloneObject = new $thisConstructor;
		}
		catch(e)
		{
			$cloneObject = new Object();
			$cloneObject.constructor = $thisConstructor;
			$cloneObject.prototype = $thisConstructorPrototype;
		}
	}

	var $propertyName = "";
	var $newObject = null;

	for($propertyName in this)
	{
		$newObject = this[$propertyName];

		if(!$thisConstructorPrototype[$propertyName])
		{
			if(typeof($newObject) == "object")
			{
				if($newObject === null)
					$cloneObject[$propertyName] = null;
				else
				{
					if($cloneDepth)
					{
						if($cloneDepth == 1)
							$cloneObject[$propertyName] = $newObject;
						else
							$cloneObject[$propertyName] = $newObject.clone(--$cloneDepth);
					}
					else
						$cloneObject[$propertyName] = $newObject.clone();
				}
			}
			else
				$cloneObject[$propertyName] = $newObject;
		}
	}

	return $cloneObject;
}

Array.prototype.addAll = function($array)
{
	if($array == null || $array.length == 0)
		return;

	for(var $i=0; $i<$array.length; $i++)
		this.push($array[$i]);
}

Array.prototype.contains = function($value)
{
	for(var $i=0; $i<this.length; $i++)
	{
		var $element = this[$i];
		if($element == $value)
			return true;
	}

	return false;
}

Array.prototype.indexOf = function($value)
{
	for(var $i=0; $i<this.length; $i++)
	{
		if(this[$i] == $value)
			return $i;
	}

	return -1;
}

Array.prototype.insertAt = function($value, $index)
{
	if($index < 0)
		this.unshift($value);
	else if($index >= this.length)
		this.push($value);
	else
		this.splice($index, 0, $value);
}

Array.prototype.remove = function($value)
{
	var $index = this.indexOf($value);

	if($index != -1)
		this.splice($index, 1);
}

Array.prototype.removeAll = function()
{
	while(this.length > 0)
		this.pop();
}

Array.prototype.replace = function($oldValue, $newValue)
{
	for(var $i=0; $i<this.length; $i++)
	{
		if(this[$i] == $oldValue)
		{
			this[$i] = $newValue;
			return;
		}
	}
}

Array.prototype.swap = function($a, $b)
{
	if($a == $b)
		return;

	var $tmp = this[$a];
	this[$a] = this[$b];
	this[$b] = $tmp;
}

String.prototype.splitAndTrim = function($delimiter, $limit)
{
	var $ss = this.split($delimiter, $limit);
	for(var $i=0; $i<$ss.length; $i++)
		$ss[$i] = $ss[$i].trim();

	return $ss;
}

String.prototype.lTrim = function()
{
	var $whitespace = new String(" \t\n\r");

	if($whitespace.indexOf(this.charAt(0)) != -1)
	{
		var $i = this.length;
		var $j = 0;

		while($j < $i && $whitespace.indexOf(this.charAt($j)) != -1)
			$j++;

		return this.substring($j, $i);
	}

	return new String(this);
}

String.prototype.rTrim = function()
{
	var $whitespace = new String(" \t\n\r");

	if($whitespace.indexOf(this.charAt(this.length - 1)) != -1)
	{
		var $i = this.length - 1;
		
		while($i >= 0 && $whitespace.indexOf(this.charAt($i)) != -1)
			$i--;

		return this.substring(0, $i + 1);
	}

	return new String(this);
}

String.prototype.trim = function()
{
	return this.lTrim().rTrim();
}
9 楼 seething 2006-12-03  
已收藏,谢谢!
8 楼 fantasy 2006-11-30  
moogle 写道
function selectOption(name,value)   
{   
    var options = document.getElementsByName(name)[0].options;   
    for (var i = 0; i < options.length; i++)    
    {   
        if(options[i].value === value)   
        {   
            options[i].selected = true;    
            break;   
        }   
    }   
  
}  

可以修改为:
function selectOption(name,value)   
{   
   document.getElementsByName(name).value=value;  
}  

可以达到同样的效果,直接指定select选中对应的值



对!已经修改过来了!
7 楼 moogle 2006-11-30  
function selectOption(name,value)   
{   
    var options = document.getElementsByName(name)[0].options;   
    for (var i = 0; i < options.length; i++)    
    {   
        if(options[i].value === value)   
        {   
            options[i].selected = true;    
            break;   
        }   
    }   
  
}  

可以修改为:
function selectOption(name,value)   
{   
   document.getElementsByName(name).value=value;  
}  

可以达到同样的效果,直接指定select选中对应的值

6 楼 fantasy 2006-11-30  
/**  
*得到现在的日期
*
*@author fangtf 
*@type string 
*/
function getNowTime()
{
  var date = new Date();

  var d= date.getDate();

  var day = (d < 10) ? '0' + d : d;

  var m = date.getMonth() + 1;

  var month = (m < 10) ? '0' + m : m;

  var yy = date.getYear();

  var year = (yy < 1000) ? yy + 1900 : yy;
 
  var hh = date.getHours();
 
  var hh = (hh < 10) ? '0' + hh : hh;
 
  var mm = date.getMinutes();
 
  var mm = (mm < 10) ? '0' + mm : mm;
  
  return (year + "-" + month + "-" +day+" "+hh+":"+mm);
}
5 楼 wujietai 2006-11-29  
oznyang 写道
半抄半改的一个js,css动态加载函数,可防止重复加载
function $import(path,type,title){
var s,i;
if(!type)type=path.substr(path.lastIndexOf(".")+1);
if(type=="js"){
var ss=document.getElementsByTagName("script");
for(i=0;i<ss.length;i++){
if(ss[i].src && ss[i].src.indexOf(path)!=-1 || ss[i].title==title)return ss[i];
}
s=document.createElement("script");
s.type="text/javascript";
s.src=path;
if(title)s.title=title;
}else if(type=="css"){
var ls=document.getElementsByTagName("link");
for(i=0;i<ls.length;i++){
if(ls[i].href && ls[i].href.indexOf(path)!=-1 || ls[i].title==title)return ls[i];
}
s=document.createElement("link");
s.rel="stylesheet";
s.type="text/css";
s.href=path;
if(title)s.title=title;
s.disabled=false;
}
else return;
var head=document.getElementsByTagName("head")[0];
head.appendChild(s);
return s;
}
请问可不可以防止刷新的?
在提交数据时。。。。
4 楼 oznyang 2006-11-29  
半抄半改的一个js,css动态加载函数,可防止重复加载
function $import(path,type,title){
var s,i;
if(!type)type=path.substr(path.lastIndexOf(".")+1);
if(type=="js"){
var ss=document.getElementsByTagName("script");
for(i=0;i<ss.length;i++){
if(ss[i].src && ss[i].src.indexOf(path)!=-1 || ss[i].title==title)return ss[i];
}
s=document.createElement("script");
s.type="text/javascript";
s.src=path;
if(title)s.title=title;
}else if(type=="css"){
var ls=document.getElementsByTagName("link");
for(i=0;i<ls.length;i++){
if(ls[i].href && ls[i].href.indexOf(path)!=-1 || ls[i].title==title)return ls[i];
}
s=document.createElement("link");
s.rel="stylesheet";
s.type="text/css";
s.href=path;
if(title)s.title=title;
s.disabled=false;
}
else return;
var head=document.getElementsByTagName("head")[0];
head.appendChild(s);
return s;
}
3 楼 独孤蟹 2006-11-28  
呵呵,不错.
2 楼 yeafee 2006-11-07  
提议不错.值得注意.
1 楼 inprise_lyj 2006-11-07  
还可以。

相关推荐

    一些公用的javascript函数(希望大家一起开源).txt

    与上一个函数相比,这个函数增加了对特定 ID 的限制条件,使得操作更加精确。 **代码示例:** ```javascript function selectAllCheckboxByID(state, name, id) { var ids = document.getElementsByName(name); ...

    jsvm2框架源码

    JSVM (JavaScript Virtual Machine的缩写),一个JavaScript基础框架,sourceforge开源项目,由万常华(wch3116)于2003年底发起, 采用的是 BSD License 授权协议。 JSVM并不是一个JavaScript Library,而是一个更...

    javascript模板引擎artTemplate.zip

    artTemplate 是新一代 javascript 模板... 可定义公用函数 未定义的数据输出空值 示例模板: [removed] (i = 0; i ; i ) { %&gt; 条目内容 &lt;%= i 1 %&gt; :[i] %&gt; [removed] 标签:artTemplate

    开源项目-teambit-bit.zip

    8. **应用场景**:Bit适用于各种场景,包括但不限于:构建UI库、设计系统、创建API模块、构建微服务、管理公用函数和工具,以及在跨项目之间共享代码。 9. **安装和使用**:要开始使用Bit,首先需要从官方仓库下载...

    基于ThinkPHP的知识库。

    本文将深入探讨一个基于ThinkPHP框架构建的知识库系统,它包括了数据库建模、用户认证以及公用JavaScript库等多个核心部分。通过理解这个系统,我们可以更好地掌握ThinkPHP框架的应用以及知识库系统的构建方法。 ...

    gt-common:这是一个封装了一些公用组件的多包管理仓库

    2. JavaScript ES6特性:如箭头函数、解构赋值、模板字符串等,这些在gt-common源码中广泛应用。 3. npm包管理:了解如何通过npm安装和使用gt-common,以及如何在自己的项目中引入和配置。 4. Storybook使用:学习...

    sk-js:ES ES6的ShaneKing JavaScript库

    1. **ES6特性**:包括箭头函数、模板字符串、let和const变量声明、解构赋值、类与继承、Promise、模块导入导出、Proxy和Reflect等,这些都增强了JavaScript的表达能力和开发体验。 2. **构建工具**:如Webpack或...

    JimColl.github.io:myWebsite公用文件夹中的文件

    - ES6+ 特性:包括箭头函数、模板字符串、Promise、async/await等现代JavaScript特性。 - 轻量级库或框架,如jQuery,用于简化DOM操作和事件处理。 - 可能会使用模块系统,如CommonJS或ES Modules,来组织和管理代码...

    ecshop模块文件说明.docx

    其中,`*.php`是后台程序文件,`help\zh_cn`为帮助文档,`images`存储后台页面的图片资源,`includes`包含后台公用文件和函数,`js`是后台JavaScript脚本,`styles`为后台样式表,`templates`是后台页面模板文件。...

    ecshop文件夹功能说明.pdf

    ECSHOP是一款流行的开源电子商务平台,其文件结构设计清晰,便于管理和维护。以下是对ECSHOP文件夹功能的详细说明: 1. **根目录**:这是ECSHOP的主目录,包含前台程序文件,如HTML、CSS、JavaScript等,用于构建...

    开发人员的社交网络建立在MERN堆栈上

    项目文件可能包含了以下结构:配置文件、数据库连接脚本、Express路由、React组件、样式表、公用函数库、测试文件以及部署脚本等。 【应用场景】: 在这样的社交网络中,用户可以创建个人资料,搜索和添加其他开发...

    sack project

    在开源项目中,"lib"目录往往包含了项目所依赖的第三方库或项目自定义的公用函数库。深入研究这个目录,我们可以学习到以下知识点: 1. **库的概念与分类**:了解静态库和动态库的区别,静态库在编译时会链接到目标...

    EC程序文件说明.docx

    3. api:调用API的系统公用函数,用于与其他系统或服务进行数据交换。 4. cert:存放证书的文件夹,用于安全通信。 5. data:数据连接设置及各类广告图片,如首页Flash广告、品牌logo等。 6. images:商品图片文件夹...

    ECSHOP各文件夹功能说明 (2).pdf

    ECSHOP是一款开源的电子商务解决方案,其文件结构设计得相当清晰,便于管理和维护。以下是对ECSHOP各文件夹及其功能的详细说明: 1. 根目录:这里是ECSHOP的入口,包含前台的主要程序文件,例如首页文件`index.php`...

    浅谈vue单页面中有多个echarts图表时的公用代码写法

    echarts是百度开源的一个使用JavaScript实现的开源可视化库,提供了丰富的图表类型和动画效果。 在实现单页应用(SPA)中多个echarts图表时,首先遇到的问题是如何初始化这些图表。传统的做法是为每个图表编写独立的...

    ECSHOP各文件夹功能说明.pdf

    ECSHOP是一款开源的电子商务系统,其文件结构设计严谨,便于管理和维护。以下是对ECSHOP各文件夹功能的详细说明: 1. 根目录:这里是ECSHOP的主目录,包含了前台程序文件,例如首页(index.php)和其他与用户交互密切...

    ecshop 立即购买

    2. **common.js**:这通常是一个JavaScript公用脚本文件,包含了一些ECSHOP全局使用的函数或方法。在"立即购买"功能中,这个脚本可能处理了按钮的点击事件,触发商品添加到购物车或直接进入结算流程的逻辑。例如,它...

    计算器微信小程序源码.zip

    5. `utils`文件夹:可能包含一些公用函数或模块。 6. `images`文件夹:存储计算器所需的图标和图片资源。 7. `README.md`或`readme.txt`:可能包含了关于如何运行和使用该项目的说明。 8. `.gitignore`:定义了版本...

Global site tag (gtag.js) - Google Analytics