阿里前端笔试题2
1.寫一個求和的函數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);(1) parseFloat()函數將字符串轉換成浮點數;
paseFloat(String)
如:window.parseFloat("-2");//返回-2
? parseInt()函數將字符串轉換為整數
如:window.parseInt("3.5");//返回3
window.parseInt("bar");//返回NaN,意思就是不能轉換為數字
window.parseInt("1010",2);//返回10,這個就是二進制的轉換
(2)toFixed()函數
1. toFixed(n) 限制小數點后位數,四舍五入。n:0~20 。
2.?作用對象必須是number,不能為其他類型。如(8.001).toFixed(2)返回8.00;
3. toFixed(n)返回值是String類型,所有當成數字進行比大小是錯誤的。
4. parseFloat(“number“)與parseInt("number")讀取字符串中第一個遇到的數(如91.2w3 第一個數為91.2)并轉換為float或int,返回類型為number.
如:
var a0 = 8.01.toFixed();var a1 = parseFloat("8.006").toFixed(2);var a2 = parseFloat("9.091").toFixed(2);a0,a1,a2的類型都是string
(3)Arguments類和arguments屬性(是javascript的內置類)
Arguments類是用于存儲和訪問函數的參數,它位于函數體內部,可以使用Function類的arguments屬性對其進行訪問。
Arguments類代表的這些參數作為數組元素存儲,所以就進行這樣的訪問,第一個參數就是arguments[0],第二個arguments[1]....
arguments.length屬性表示傳遞給函數的參數數目,但是,傳遞給函數的參數與該函數聲明的參數的數目可能不同。下面的代碼就是這么做的。
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>求和</title><script type="text/javascript">function sum() {var nResult = 0;for (var i = 0, len = arguments.length; i < len; i++) {nResult += window.parseFloat(arguments[i]) || 0;}return nResult.toFixed(3) * 1000 / 1000;}console.log(sum(1,2,3,4,5));console.log(sum(5,null,-5));console.log(sum('1.0', false, 1, true, 1, 'A', 1, 'B', 1, 'C', 1, 'D', 1,'E', 1, 'F', 1, 'G', 1));console.log(sum(0.1,0.2));</script> </head> <body></body> </html>
上面的代碼,
window.parseFloat(arguments[i]) || 0??? parseFloat的結果要么為一個小數,要么為NaN,||運算如果前一個為真則不計算后一個,直接返回前一個表達式的值,如果是NaN則返回后一個表達式的值; nResult.toFixed(3) * 1000 / 1000 這個是在做:保留三位小數,并且去掉末尾的0,最后一位會進行四舍五入。2. 請寫一個表格以及對應的CSS,使表格奇數行為白色背景,偶數行為灰色背景,鼠標移上去時為黃色背景。
通過for循環遍歷,然后
trs[i].className=(i%2==0)?'even':'odd';
來判定是奇數行還是偶數行
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>奇偶行變色</title><style type="text/css">tr{text-align: center;}.even{background-color:grey;}.odd{background-color: white;}.ye{background-color: yellow;}</style><script type="text/javascript">window.οnlοad=function(){var tab=document.getElementById('t1');var tbody=tab.getElementsByTagName('tbody')[0];var trs=tbody.getElementsByTagName('tr');for(var i=0;i<trs.length;i++){trs[i].className=(i%2==0)?'even':'odd';//鼠標移上去會變黃色trs[i].οnmοuseοver=function(){this.className='ye';}trs[i].οnmοuseοut=function(){this.className=' ';}}}</script> </head> <body><div style="margin:10px 0;"><table id="t1" style="width:500px;height:auto"><thead><tr style="background-color:#00ae9d"><td>序號</td> ? <td>姓名</td> ?<td>年齡</td> ? </tr><thead><tbody> ? <tr><td>1</td><td>張三</td><td>24</td></tr> ? <tr> ? <td>2</td> ? <td>李逵</td> ? <td>38</td> ? </tr> ? <tr> ? <td>3</td> ? <td>林沖</td> ? <td>43</td> ? </tr> ? </tbody></table></div> </body> </html>3. 寫一個traverse函數,輸出所有頁面寬度和高度大于50像素的節點。
(1)在DOM中,HTML文檔的各個節點被視為各種類型的Node對象,并且將HTML文檔表示為Node對象的樹。對于任何一個樹形結構來說,最常做的就是遍歷樹。在DOM中,可以通過parentNode,firstChild,nextChild,lastChild,childNodes(節點所有的子節點)等屬性來遍歷文檔樹。
(2)concat用于數組的連接。
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>轉換</title><script type="text/javascript">function traverse(oNode){var aResult=[];var oNode=oNode||doucment.body;if(oNode.style){var nWidth=window.parseInt(oNode.style.width,10)||0;var nHeight=window.parseInt(oNode.style.height,10)||0;if(nWidth>50 && nHeight>50){aResult.push(oNode);}}var aChildNodes=oNode.childNodes;if (aChildNodes.length>0) {for(var i=0,len=aChildNodes.length;i<len;i++){var oTemp=aChildNodes[i];aResult=aResult.concat(traverse(oTemp));}}return aResult;}</script> </head> <body></body> </html>
轉載于:https://www.cnblogs.com/GumpYan/p/5841420.html
總結
- 上一篇: UVa10943
- 下一篇: 小孩没上学,想买个学习机不知道怎样选择才