一些JavaScript题目
Q:如何将一个数组的内容复制到另外一个数组?
A:
jscript.array.copyArray = function(isSrcArray,inDestArray){
var i;
for(i = 0; i < inSrcArray.length; i++)
{
inDestArray.push(inSrcArray[i]);
}
return inDestArray;
}// End copyArray()
把inSrcArry的中每一个元素都添加到inDestArry中。返回inDestArray.
Q:怎样在一个数组中查找指定的元素呢?
假设用户在页面中输入一系列的值。看起来合理的是应该把他们放到一个数组中 。
A:
jscript.array.findInArray = function(inArray,inValue)
{
var i;
for(i = 0;i<inArray.length;i++)
{
if(inArray[i] == inValue)
{
return i;
}
}
return -1;
}
//遍历数组所有的值是否等于我们要找的值,然后返回下标值。找不到返回-1.这个几乎是任何类型的查找中“不,没有找到”的常见返回值。
Q:假设我有一个数组,如何计算数组中所有值的平均值?
A:
jscript.array.arrayAverage = function(inArray) {
var accmulatot = 0;
var i = 0;
for(i = 0; i< inArray.length;i++)
{
accmulator += inArray[i];
}
return accmulator / inArray.length;
}
//累加数组中的所有值,再除以长度。
Q:如何获取正在使用应用程序的浏览器的标示信息?
A:
jscript.browser.getBrowserIdentity = function() {
return navigator.appName + " " + navigator.appVersion;
}
//返回一个字符串,它由浏览器的名称和版本组成。
Q:如何轻松的知道一个给月有多少天?比如用户输入31.我就需要确定输入的月份是有31天的?
A:
jscript.datetime.getNumberDaysInMonth = function(inMonth,inYear)
{
inMonth = inMonth - 1;
var leap_year = this.inLeapYear(inYear);
if(leap_year)
{
leap_year = 1;
}
else
{
leap_year = 0;
}
if(inMonth == 3 || inMonth == 5 || inMonth == 8 ||inMonth ==10)
{
return 30;
}
else if(inMonth == 1)
{
return 28 + leap_year;
}
else
{
return 31;
}
}
判断输入的年是否为一个闰年,要实现这个功能,我们要再写一个名为isLeapYear()的函数用于检测
。闰年的2月由29天。
我们要记住4月,6月,9月。11月有31天。
jscript.datetime.isLeapYer = function(inYear) {
if((inYear % 4 == 0 && !(inYear %100==0)) || inYear %400 ==0)
{
return true;
}
else { return false;}
}
//如果年份可以被4整除且不能被100整除,或它可以被400整除的话,那么它就是闰年。
Q:如何显示一个任意的一个对象的所有属性以及他们的值?
jscript.debug.enumProps = function(inObj) {
var props = "";
var i;
for(i in inObj){
props += i + "=" + inObj[i] + "\n";
}
alert(prop);
}
Q:如何实现一个健壮的自动记录日志机制呢?类似jakarta Comons Logging?
我经常发现想在代码中放入一些日志信息,
Q:如何将任意的一个DOM元素居中?
当一个表单被提交时,应用程序弹出一个"请等待"的信息。它只是一个z-index设置为大的数值的
<div>,所以它可以被显示在其他所有东西的上面。不幸的是,那个写代码的临时工不知道如何将
<div>居中。所以它通常是在左上角。
jscript.dom.layerCenterH = function(inObj)
{
var lca;
var lcb;
var lcx;
var iebody;
var dsocleft;
if(window.innerWidth)
{
lca = window.innerWidth;
}
else
{
lca = document.body.clientWidth;
}
lcb = inObj.offsetWidth;
lcx = (Math.round(lca/2)) - (Math.round(lcb/2));
iebody = (document.compatMode && document.compatMode !="BackCompat")? dscoleft =
document.all ? iebody.scrollLeft:window.pageXOffset;
inObj.style.left = lcx +dsocleft + "px";
}
Q:如何引用任意数量的DOM元素?
A:
jscript.dom.getDOMElements = function()
{
if(arguments.length == 0)
{return null;}
if(arguments.length ==1)
{return document.getElementById(arguments[0]);}
var elems = new Array();
for ( var i = 0;i<arguments.length;i++)
{
elems.push(document.getElementById(arguments[i]))'
}
return elems;
}
这个函数会接受可变数量的参数。
Q:如何从一个HTML表单生成一个XML? 86页代码未摘录。
Q:select提高全选功能?
A:
jscript.form.selectSelectAll = function(inSelect)
{
if(inSelect == null || !inSelect.options || inSelect.options.length==0)
{return;}
var i;
for(i = 0;i<inSelect.options.length;i++)
{
inSelect.options[i].selected =true;
}
}
Q:如何获得一个对象的的属性并把他们复制给另外一个对象?
A:
jscript.lang.copyProperties = function(inSrcObj,inDestObj,inOverride)
{
var prop;
for(prop in inScrObj)
{
if(inOverride || !omDestObj[prop])
{
inDestObj[prop] = inSrcObj[prop];
}
}
return inDestObj;
}
//使用for ...in 循环遍历inSrcObj的属性。对于每一个属性,查看是否已经在inDestObj中存在,如果存在,通过传入true作为inOverride参数的值,来看看条用着是否让我们覆盖已存在的属性。如果它存在是,我们就重写,如果它不存在,我们使用数组符号设置inDestObj的属性的值。
Q:如何在一个指定范围内生成随机数?
A:
jscript.math.genRandomNumber = function(inMin,inMax)
{
if(inMin >inMax){return 0;}
return inMin +(inMax-inMin)*Math.random();
}
Q:
如何使用JavaScript打破一个框架?就是不在是iframeset!
A:
jscript.page.breakOutOffFrames = function() {
if(self !=top)
{
top.location = self.location;
}
}