本文整理了 JavaScript 开发中的常见面试题,涵盖表单取值、控件隐藏显示(visibility与display区别)、赋值与比较运算符、字符串字节长度计算、Alert换行、动态时间格式化及数组去重算法。同时详细解析了 setTimeout 与 setInterval 的执行机制与用法差异,提供完整代码示例与答案参考。
<form name="a">
<select name="a" size="1" onchange="_sel(this)">
<option value="a">1</option>
<option value="b">2</option>
<option value="c">3</option>
</select>
</form>
<script type="text/javascript"><!--
function _sel(obj){
alert("显示文本:" + obj.options[obj.selectedIndex].text);
alert("值:" + obj.options[obj.selectedIndex].value);
}
// --></script>
2.javascript实现页面控件隐藏与显示的两种方法
JavaScript 控制页面控件隐藏显示的两种方法
在 JavaScript 中,控制页面控件隐藏与显示主要有两种方法,其核心区别在于隐藏后控件是否继续在页面布局中占据空间。
方法一:
document.all["PanelSMS"].style.visibility="hidden";
document.all["PanelSMS"].style.visibility="visible";
方法二:
document.all["PanelSMS"].style.display="none";
document.all["PanelSMS"].style.display="inline";
使用方法一隐藏控件后,页面中原有的位置仍被该控件占用,仅视觉上不可见,这类似于 .NET 验证控件中 Display=Static 的行为。
使用方法二隐藏控件后,页面中原有的位置不再被占用,后续元素会填补该空间,这类似于 .NET 验证控件中 Display=Dynamic 的行为。
3.var a = 10; var b = 20; var c = 10; alert(a = b); alert(a == b); alert(a == c);输出结果是什么?
以下是答案:a = b 是赋值,a == b是判断值是否相同lect>域的选择部分的文本?
4. 编写一个方法计算字符串的字节长度?
JavaScript 常见面试题与核心用法解析
<script language="javascript" type="text/javascript"><!--
new function(s)
{
if(!arguments.length||!s) return null;
if(""==s) return 0;
var l=0;
for(var i=0;i<s.length;i++)
{
if(s.charCodeAt(i)>255) l+=2;
else l++;
}
alert(l);
}("hello你好,我好,大家好!world!");
// --></script>
5. 如何控制alert对话框中的换行符
<script language="javascript" type="text/javascript"><!--
alert("hello\nworld");
// --></script>
6. 按照格式 xxxx年xx月xx日xx时xx分xx秒动态显示时间,要求不足10位补0?
<script language="javascript" type="text/javascript"><!--
new function()
{
with(new Date())
{
var t=function(a){return a<10?"0"+a:a;}
alert(getFullYear()+"年"+t(getMonth()+1)+"月"+t(getDate())+"日"+t(getHours())+"时"+t(getMinutes())+"分"+t(getSeconds())+"秒");
}
}
// --></script>
7. 编写一个方法去除数组中的重复元素
<script language="javascript" type="text/javascript"><!--
Array.prototype.strip=function()
{
if(this.length<2) return [this[0]]||[];
var arr=[];
for(var i=0;i<this.length;i++)
{
arr.push(this.splice(i--,1));
for(var j=0;j<this.length;j++)
{
if(this[j]==arr[arr.length-1])
{
this.splice(j--,1);
}
}
}
return arr;
}
var arr=["abc",85,"abc",85,8,8,1,2,5,4,7,8];
alert(arr.strip());
// --></script>
8.js中SetInterval与setTimeout的使用方法?
延时时间/交互时间是以豪秒为单位的(1000ms=1s)
setTimeout 在执行时,是在载入后延迟指定时间后,去执行一次表达式,仅执行一次
SetInterva 在执行时,它从载入后,每隔指定的时间就执行一次表达式
1)基本用法:
执行一段代码:
var i=0;
setTimeout("i+=1;alert(i)",1000);
执行一个函数:
var i=0;
setTimeout(function(){i+=1;alert(i);},1000);
下面再来一个执行函数的:
var i=0;
function test(){
i+=1;
alert(i);
}
setTimeout("test()",1000);
也可以这样:
setTimeout(test,1000);
2)<script type="text/javascript"><!--
function sett()
{
document.body.innerHTML=Math.random();
}
setInterval("sett();", 500);
// --></script>