2006-11-07
一些公用的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;
}
评论
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应该是唯一的
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应该是唯一的
A_Bing
2007-04-15
收藏下.. js 是一门很有意思的语言
wjtang
2006-12-21
Thank very much
fantasy
2006-12-18
j2eeqk 写道
这些非常简单的一般性的算法我觉得贴在这里意义不大。
其实很多地方你都没有考虑到效率的问题,而且很多function对象,有时候并不需要按照你函数规定的形式参数来传值。举个最简单的例子,你有一组checkbox,然后用'1,2'一串值,让对应的checkbox符合这个值的被选中。你考虑过你的循环执行次数吗?是先执行'1,2'.split后的循环还是先开始checkbox组的循环?每次循环后你考虑过用slice来剔除掉已经循环过的元素提高效率吗?
其实很多地方你都没有考虑到效率的问题,而且很多function对象,有时候并不需要按照你函数规定的形式参数来传值。举个最简单的例子,你有一组checkbox,然后用'1,2'一串值,让对应的checkbox符合这个值的被选中。你考虑过你的循环执行次数吗?是先执行'1,2'.split后的循环还是先开始checkbox组的循环?每次循环后你考虑过用slice来剔除掉已经循环过的元素提高效率吗?
首先感谢你的回帖!
接下来回答你的问题。
首先我贴这个帖子的目的是为了避免大家重复造轮子,这个也是开源的目的之一,而且有你这样好的回帖也是意义之一,集思广益。
至于效率方面,我很赞同你的说法,我考虑得不是很全面。
j2eeqk
2006-12-16
这些非常简单的一般性的算法我觉得贴在这里意义不大。
其实很多地方你都没有考虑到效率的问题,而且很多function对象,有时候并不需要按照你函数规定的形式参数来传值。举个最简单的例子,你有一组checkbox,然后用'1,2'一串值,让对应的checkbox符合这个值的被选中。你考虑过你的循环执行次数吗?是先执行'1,2'.split后的循环还是先开始checkbox组的循环?每次循环后你考虑过用slice来剔除掉已经循环过的元素提高效率吗?
其实很多地方你都没有考虑到效率的问题,而且很多function对象,有时候并不需要按照你函数规定的形式参数来传值。举个最简单的例子,你有一组checkbox,然后用'1,2'一串值,让对应的checkbox符合这个值的被选中。你考虑过你的循环执行次数吗?是先执行'1,2'.split后的循环还是先开始checkbox组的循环?每次循环后你考虑过用slice来剔除掉已经循环过的元素提高效率吗?
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);
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;
}
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();
}
seething
2006-12-03
已收藏,谢谢!
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选中对应的值
对!已经修改过来了!
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选中对应的值
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);
}
*得到现在的日期
*
*@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);
}
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;
}
请问可不可以防止刷新的?
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;
}
在提交数据时。。。。
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;
}
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;
}
独孤蟹
2006-11-28
呵呵,不错.
- 浏览: 79810 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
J2EE开发注意事项
写绝对路径,在移动文件到其他文件夹的时候,不需要修改代码。
-- by fantasy -
J2EE开发注意事项
5.页面上的地址原则上写绝对路径。 是何道理呢? 相对路径先定位到根,然后定 ...
-- by nwangwei -
深入osworkflow的function
kathytingzi 写道怎么实现会签阿,谢谢啦 增加两个conditon, ...
-- by fantasy -
使用Filter控制页面的权限
恩,是面向切面。过滤器可以看成是一个切面。
-- by fantasy -
深入osworkflow的function
工作流初学者: 参考:http://hi.baidu.com/vjame/blo ...
-- by amuj2ee






评论排行榜