DAY6:前端笔试题

来源:互联网 发布:淘宝关注人数怎么刷 编辑:程序博客网 时间:2024/06/02 12:02

NO.1写一个traverse函数,输出所有页面宽度和高度大于50像素的节点。

<pre name="code" class="html">function traverse(tNode) {    var result = [];    var root = tNode || document.body;    if (root.nodeType !== 1) {        return [];    }    var height =parseInt( getCurrentStyle(root, "height"));           var width =parseInt( getCurrentStyle(root, "width"));       if (height > 50 && width > 50) {        result.push(root);    }    var childs = root.childNodes;    for (var i = 0; i < childs.length; i++) {        result = result.concat(traverse(childs[i]));    }        return result;}function getCurrentStyle(obj, attr) {if (obj.currentStyle) {return obj.currentStyle[attr];} else {return getComputedStyle(obj, false)[attr];}}


知识点:

1.

用document.getElementById(‘element').style.xxx可以获取元素的样式信息,它获取的只是DOM元素style属性里的样式规则,拿不到对于通过class属性引用的外部样式表;DOM标准里有个全局方法getComputedStyle;IE不支持此方法,它有自己的一个实现方式,那就是currentStyle;不同于全局方法getComputedStyle,它是作为DOM元素属性存在的,eg:obj.currentStyle["attr"];getComputedStyle(obj,伪类)["attr"]

2.

parseInt() 函数可解析一个字符串,并返回一个整数。

3.元素子节点

 document.body.childNodes;element.childNodeschildNodes 属性返回节点的子节点集合,以 NodeList 对象

4.nodeType

元素1属性2文本3注释8文档9

NO2.请写一个表格以及对应的CSS,使表格奇数行为白色背景,偶数行为灰色背景,鼠标移上去时为黄色背景。

tr:nth-child(odd){background-color:black;}tr:nth-child(even){background-color:gray;}tr:hover{background-color:yellow;}<table class="table">  <tr><td>第一行</td></tr>  <tr><td>第二行</td></tr>  <tr><td>第三行</td></tr>  <tr><td>第四行</td></tr></table>
知识点:

1.表格布局

<table border="1"><tr><th>Heading</th><th>Another Heading</th></tr><tr><td>row 1, cell 1</td><td>row 1, cell 2</td></tr><tr><td>row 2, cell 1</td><td>row 2, cell 2</td></tr></table>
显示结果:

HeadingAnother Headingrow 1, cell 1row 1, cell 2row 2, cell 1row 2, cell 2

css选择器

nth-child()

{

}

eg:

p:nth-child(odd)//奇

{

background:#ff0000;

}

p:nth-child(even)//偶

{

background:#0000ff;

}

(an + b)

描述:表示周期的长度,n 是计数器(从 0 开始),b 是偏移值。

eg:

p:nth-child(3n+0)

{

background:#ff0000;

}

NO3.写一个求和的函数sum,达到下面的效果
// Should equal 15
sum(1, 2, 3, 4, 5);
// Should equal 0
sum(5, null, -5);
// Should equal 10
sum('1.0', false, 1, true, 1, 'A', 1, 'B', 1, 'C', 1, 'D', 1,
  'E', 1, 'F', 1, 'G', 1);
// Should equal 0.3, not 0.30000000000000004
sum(0.1, 0.2);


function sum(){   var result=0;for (var i=0;i<=arguments.length;i++){    if(typeof(arguments[i])=="number"){  result+=arguments[i];}else if(typeof(arguments[i])=="string"){if((/^\-?\d+\.?\d+$/).test(arguments[i])){   result+=parseFloat(arguments[i]);}}}return result.toFixed(3)*1000/1000;}

知识点:

arguments 对象

在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。

typeof(obj)

ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String。

typeof 返回

undefined - 如果变量是 Undefined 类型的

boolean - 如果变量是 Boolean 类型的

number - 如果变量是 Number 类型的

string - 如果变量是 String 类型的

object - 如果变量是一种引用类型或 Null 类型的

isNaN

isNaN() 函数用于检查其参数是否是非数字值。

如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true。如果 x 是其他值,则返回 false。

toFixed() 

toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。

eg:

num.toFixed(保留位数)

NO.4删除给定数组中的第二项和第三项,并且在得到的新的数组中第二项后面添加一个新的值

var arr1 = ['a','b','c','d','e'];
var arr2 = arr1.1
( 2 ,3 ,'newvalue')
字符串操作:
slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
stringObject.slice(start,end)
一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。
split() 方法用于把一个字符串分割成字符串数组
separator 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
数组
join() 方法用于把数组中的所有元素放入一个字符串。
元素是通过指定的分隔符进行分隔的。
separator 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
document.write(arr.join())
//George,John,Thomas
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
document.write(arr.join("."))
//George.John.Thomas
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
arrayObject.splice(index,howmany,item1,.....,itemX)
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX可选。向数组添加的新项目。
返回值 包含被删除项目的新数组,如果有的话。
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
arr.splice(2,0,"William")
//George,John,Thomas,James,Adrew,Martin
//George,John,William,Thomas,James,Adrew,Martin


1 0
原创粉丝点击