当前位置:编程学习 > JS >>

今天了解了下JavaScript的location对象,它的某些方法或属性可以把网页按照制定URL重新加载,但是有个问题

比如使用location.href="
答案:如何让网页适应不同分辨率 
解决思路: 
在不同分辨率下看到的网页版面格式有很大差别,甚至有可能错位。导致这种差别的原因,主要是因为网页中用了绝对定位的层,并且页面内容设置为居中,这样在分辨率改变时就会导致错位。因此我们可以通过判断用户的分辨率,然后让页面或排版做出相应变化。 
方法一:做为不同的分辨率做不同的页,然后做个引导页,获取到客户端屏幕的分辨率后转向到相应页 
具体步骤: 
1. 先捕获用户的分辨率。 

水平分辨率:screen.width 
垂直分辨率:screen.height 

2.再用页面跳转的方法转到相应页。 

location.replace(screen.width+".htm") 

或者: 

location.replace(screen.height+".htm") 

3.完整代码。 

<script language="JavaScript"> 
<!-- 
location.replace(screen.width+".htm"); 
//--> 
</script> 

技巧:screen.width 也可以改成 screen.availWidth。 
提示: 
l language="JavaScript" 指定脚本所用语言为 JavaScript,大部分浏览器的默认客户端脚本语言就是 JavaScript,所以也可以省略不写。 
l <!-- 和 //--> 两个标识的作用是通知不支持 JavaScript 浏览器忽略两标识间的所有 JavaScript 代码,一般情况下可以省略不写。 
l JavaScript 语句与 C 语言一样用分号”;”结束,但也可以省略不写,每一新行表示开始一条新语句。 
l screen.width+".htm" 在进行字符串连接后得到诸如 800.htm,1024.htm 之类的文件名。 
l 可以在把完整代码存成单独一页作为引导页。 
试一试:读者可以试着用assign方法实现页面跳转。 
方法二:根据文档显示区域宽度重新调整层的定位。 
具体步骤: 
1. 获取文档显示区域的宽度。 

document.body.offsetWidth 

2.判断对象是否为层。 

function isLayer(obj){ 
with(obj.currentStyle) 
return (position=="absolute"&&left!="") 
} 

3.完整代码。 

<script language="JavaScript"> 
<!-- 
function isLayer(obj){ //判断对象是否为层的函数 
/*不用 style 而用 currentStyle 的原因是因为有些层不是直接在标签内写 CSS 的,这时用 style 取不到值*/ 
with(obj.currentStyle) //返回布尔值true或false 
return (position=="absolute"&&left!="") 
} 
//800为800X600分辨率下窗口最大化时document.body.offsetWidth的值 
var iWidth=800 
window.onload=function init(){ 
//匹配页面中所有标签名为DIV元素,以数组形式返回对象 
var divs=document.getElementsByTagName("DIV") 
for(var i=0;i<divs.length;i++)//遍历所有DIV标签 
if(isLayer(divs[i]))//判断对象是否为层,是则调整它的 X 坐标 
divs[i].runtimeStyle.posLeft=parseInt(divs[i].currentStyle.left)+(document.body.offsetWidth-iWidth)/2 
iWidth=document.body.offsetWidth //保存当前文档显示区域的宽度 
} 
//--> 
</script> 
<body onresize="init()"> 
<div id=demo style="position:absolute;left:50px;top:100px;width:200px;height:200px;border:1px solid #000">Layer1</div> 
<div id=demo1 style="position:absolute;left:250px;top:50px;width:200px;height:200px;border:1px solid #000">Layer2</div> 

注意: 
l 必须确保所有层的标签为 DIV。 
l 程序中的 demo 和 demo1 两个层只是测试用的,在实际就用时可以删掉。 
技巧:如果所有层都是直接在标签内的定义的,可以把 currentStyle 和runtimeStyle 改成 style。 
提示: 
l JavaScript 的单行注释是以一对正斜杠”//”开始,多行注释以一个正斜杠加一个星号的组合(/*)开始,并以其逆向顺序 (*/)结束。 
l window.onload 表示在页面加载完成后触发。 
l onresize="init()" 表示在窗口大小改变时触发名为 init 的函数。 
分析:屏幕分辨率先是影响到文档显示区域宽度(document.body.offsetWIdth)大小,然后文档显示区域宽度大小进一步影响到层的X轴定位和页面内容居中部分的相对位置,所以只要根据文档显示区域宽度大小来重新调整层的X轴坐标就行了。 
特别提示 
Javascript脚本的代码原则上是要求放在代码的 <head> 与 </head> 间,但放到其它标签窗口内也可以正常运行,方法二中代码运行后效果如图 3.1 和 3.2 所示: 

图 3.1 窗口最大化时层的 

图 3.2 窗口缩小后的层的位置 

特别说明

方法一中用到了 location 对象的 replace 和 assign 方法来加载目标文档。 
1. location对象的replace方法是将指定的文档替换当前文档。 
2. location对象的assign方法是装入新的HTML文档。 
方法二中用了 currentStyle、runtimeStyle 和 style 三个对象来捕获目标对象的样式设置。 
1. currentStyle对象代表在全局样式表、内嵌样式和 HTML 标签属性中指定的对象格式和样式。 
2. runtimeStyle对象代表居于全局样式表、内嵌样式和 HTML 标签属性指定的格式和样式之上的对象的格式和样式。 
3. style对象代表给定元素所有可能的内嵌样式的当前设置
其他:问题呢? 楼上说了一大片,可见是白费,我就精简点说说吧.相信你会明白的.
先分层次来说明一下
最大的为:
对像-->属性-->方法.
对像就是你的一个身体,属性就是你的手或者脚,方法是手脚的作用.
明了吧?呵呵.
 我来解释解释吧

先给你解释下this
有如下代码:
<input id="ss" type="text" value="haha" onclick="alert(this.value);" />
当你用鼠标点击文本框的时候,将会谈出一个对话框,内容为“haha”
this用在这里,就是代表这个<input />标签本身,等同于this的代码为:
document.getElementById("ss");//获得id=ss的标签对象的引用
如:<input id="ss" type="text" value="haha" onclick="alert(document.getElementById("ss").value);" />
效果是一样的
所以this.value等同于document.getElementById("ss").value
在不同的地方,this代表的对象引用不同,如果用在某某html标签内,那么它代表的就是这个标签本身,如果用在function内,则代表函数本身,如果用在全局作用于内,例如:
<script language="JavaScript" type="text/javascript">
   this.window.close();
  </script>
则代表浏览器本身
*************************************************************
onChange="document.location.href=this.value
猜测一下,你这个代码应该是放在<select>中吧,你value后面少个引号
onChange是改变事件,当你操作的对象改变时(如:选择一个不同的下拉列表项时),将执行此方法指向的函数或代码段
document.location.href如同前面的解释,就是一个internate转向,等于号后面的值,即为要转到的网址。this在这里则是这个标签的value属性中给出的内容
*************************************************************
onmouseover="style.backgroundColor='#C86F70'" 
onmouseover鼠标经过事件,当鼠标放在那上面的时候,将会执行等于号右面的代码段或函数引用
style代表样式表,其中包含n多属性
backgroundColor则是style中的一个属性,他控制的是背景颜色
style.backgroundColor='#C86F70'等于号右面的则是一个颜色的值,代表一个颜色。配色方案好像是有4中,这个属于rgb的,还有类似于255.255.0这样的,还有4各参数的,100.100.100.0,最后一个控制透明度。具体的记不清了
这里为什么没有用this.style.backgroundColor?
是因为这里的缺省值(即默认值)就是this,所以可以不用。就像你在全局范围内输入alert("xxxx");一样,this都是缺省的,但在某些情况下需要特殊指出,如this.value  应该用 confirm来获取返回值,通过判断返回值来定向到某个网页,不是用alter  应该用 confirm来获取返回值,通过判断返回值来定向到某个网页,不是用alter   JavaScript语言有以下特点:
(1) JavaScript语言的语法类似于C语言和Java语言。
(2) JavaScript程序由客户端的浏览器解释执行。
(3) JavaScript中,字母区分大小写。
由于JavaScript是解释执行的,所以它的语法远不如C语言等严格,如果程序中有错误,浏览器会忽略错误的部分,而不是停止执行。
JavaScript程序是在客户端执行的,它不能操纵服务器中的数据库,所以包含了JavaScript的网页仍是静态网页。
整型常量:
以 0 开头的是八进制数,如 065。
以 0x 开头的是十六进制数,如 0x3f4a。
其它为十进制数,如 35,-70。
浮点常量:
如 12.8、-0.65、1.2e-7。
布尔常量:
有 true 和 false 两个。
字符串常量:
如:"OK"、"a"、"欢迎光临"。
注:JavaScript中的字符串可以用双引号分界,也可用单引号分界。如果串中含有一种引号,需用另一种引号分界。
转义字符:
如:\n 代表换行,\r 代表回车,\t 代表Tab符,\" 代表双引号,\' 代表单引号。
它们一般用于字符串之中。
undefined:
代表未定义的值。它不能用于计算,如果引用了一个不存在的变量,或没有赋值的变量时,输出此值。
null:
代表空值。它不能用于计算,但可以用它为变量赋值,来清空变量中原有的值。
说明:在JavaScript中没有其它语言中常见的字符型量,需要用字符串代替。

JavaScript的数据类型可分为两大类:原始类型、引用类型。原始类型变量的值存放在栈中,访问变量时可直接访问到变量的值。引用类型变量在栈中存放的是指针,其值另外存放在堆中,需要通过指针才能访问。
原始类型:包括 Undefined、Null、Boolean、Number、String 五种。
Undefined 类型:值为 undefined,代表一个未定义的量。
Null 类型:值为 null,一般用作占位符,表示一个尚不存在的对象。
Boolean 类型:值为 false 或 true,一般用于条件表达式中。
Number 类型:值为数字,可进行数值计算。
String 类型:值为字符串,可进行字符串处理。
引用类型:所有对象都是引用类型。包括 Boolean、Number、String、Array、Date、Math 等。
其中,Boolean、Number、String 既可以是原始类型,也可以是引用类型。
引用类型的变量除了可以访问变量的值以外,还提供了若干属性和方法。

JavaScript中的变量声明用关键字 var 引导,变量的类型取决于它的声明方式。
声明原始类型的变量:
var 变量名 = 值; 例如:
var x;
var b = true;
var k = 20;
var s = "abc"; 变量 x 没有指定值,它的值默认为 undefined,变量 b 为 Boolean 型,变量 k 为 Number 型,变量 s 为 String 型。
声明引用类型的变量:
var 变量名 = new 类型名(初值); 例如:
var bb = new Boolean(false);
var str = new String("Hello");
var arr = new Array("red","yellow","blue"); 变量 bb 是 Boolean 对象,变量 str 是 String 对象,变量 arr 是 Array 对象。
JavaScript的变量是弱类型的,变量的类型主要取决于它的值,你可以随时更改它的类型。
例如:
var i;
i = 20;
i = "red";
声明时变量 i 是 Undefined 类型,赋值一个整数后,它成为 Number 类型,赋值为字符串后,又成为 String 类型。

JavaScript中的运算符和C语言基本相同,优先级也相同。
算术运算符:+(加)、-(减)、*(乘)、/(除)、%(取模)、++(增量)、--(减量)、-(取负)。
逻辑运算符:(与)、||(或)、!(非)。
比较运算符:(大于)、=(大于等于)、(小于)、=(小于等于)、==(等于)、!=(不等于)、===(严格相等)、!==(不严格相等)。
注:“相等”只要求值相等,“严格相等”要求值相等且类型相同。如:1=="1" 是 true,而 1==="1" 是 false。
位运算符:(位与)、|(位或)、^(位异或)、~(按位取反)、(左移)、(右移)、(填0右移)。
赋值运算符:=(赋值)、op=(运算赋值)。
注:运算赋值中的运算符可以是算术运算符或位运算符。如:“x+=10”表示“x=x+10”。
条件运算符:条件 ? 表达式1 : 表达式2
注:若条件为 true,值为表达式1的值,否则为表达式2的值。
字符串连接运算符:+、+=。
如:"every"+"one" 的结果为 "everyone"。
注:连接的项目中可以包括字符串、常量、变量,不需要都是字符串,只要项目中有一个是字符串就会按字符串进行连接。
如:"ex"+20+"b" 的结果为 "ex20b"。
new 运算符:
用于创建一个对象。如:new Array() 表示生成一个数组对象。
delete 运算符:
用于删除一个对象。

JavaScript语句用“;”分界,但没有分号也可以正常使用,不过应该养成书写分号的习惯。
表达式语句:
x=1;
x++; 条件语句:if …… else ……
if( x0 )
k = "A";
else
k = "B"; 多路分支语句:switch …… case ……
switch( a )
{
case 1: x = "A"; break;
case 2: x = "B"; break;
case 3: x = "C"; break;
default: x = "D";
} 循环语句:while
while( x5 )
{
y += x;
x++;
} 循环语句:do …… while
do
{
y += x;
x++;
}while( x5 ); 循环语句:for
for( i=1; i=10; i++ )
{
x += 2;
} 退出循环:break、continue
break 语句可退出循环语句或 switch 语句。
continue 语句可结束本次循环,并开始下一次循环。

JavaScript语句用“;”分界,但没有分号也可以正常使用,不过应该养成书写分号的习惯。
表达式语句:
x=1;
x++; 条件语句:if …… else ……
if( x0 )
k = "A";
else
k = "B"; 多路分支语句:switch …… case ……
switch( a )
{
case 1: x = "A"; break;
case 2: x = "B"; break;
case 3: x = "C"; break;
default: x = "D";
} 循环语句:while
while( x5 )
{
y += x;
x++;
} 循环语句:do …… while
do
{
y += x;
x++;
}while( x5 ); 循环语句:for
for( i=1; i=10; i++ )
{
x += 2;
} 退出循环:break、continue
break 语句可退出循环语句或 switch 语句。
continue 语句可结束本次循环,并开始下一次循环。

对象(Object)是JavaScript中最重要的一种数据类型,一个对象中可包含若干属性和方法。
属性相当于一种变量,有些属性一开始就有值,可以通过它们获取对象的参数,有些属性是只读的,这种属性可作为常量使用。引用对象属性的方法是:
对象名.属性名 方法相当于函数,你可以调用对象的方法来实现相应操作。引用对象方法的方法是:
对象名.方法名(参数) 有些方法不需要参数,但在调用时也不能省略括号。
JavaScript支持自定义对象,但我们在编程中使用的一般都是系统提供的对象。这些对象提供了丰富的属性和方法,可以在程序中直接使用它们。
JavaScript可访问的对象包括:本地对象、BOM 对象 和 DOM 对象。
本地对象 是JavaScript语言提供的对象,它们只能用于JavaScript程序中。包括 Boolean对象、Number对象、String对象、Array对象、Data对象、Math对象等。
BOM 对象 是由浏览器窗口提供的对象,它们由浏览器开发者提供,可以被包括JavaScript在内的脚本语言访问。包括 Window对象、Document对象、Navigator对象、Screen对象、History对象、Location对象等。
DOM 对象 是一种跨平台的对象,它们可以用于不同语言的程序中。DOM 对象对应的是页面中的标签,每个HTML标签都是一个 DOM 对象。
对象实例:
对象实例是对象的具体个体,一个对象可以拥有多个对象实例,比如每个字符串都是一个 String 对象的实例,我们访问对象时,实际上访问的是对象的实例。
本地对象的实例一般是通过 new 运算符生成的,比如:
var arr = new Array("red","yellow","blue");
var s = "Hello"; arr 是一个 Array 对象的实例,s 是一个 String 原始类型,但它也是一个伪对象,可以引用 String 对象的属性和方法。
BOM 对象对应的是浏览器窗口,它本身已经实例化了,可以直接访问,比如:
window.alert("Hello!");
document.write("欢迎光临"); window 是当前窗口的 Window 对象的实例,document 是当前窗口的 Document 对象的实例。
DOM 对象对应的是页面中的 HTML 标签,每个标签都是某种 DOM 对象的实例,它们往往是通过 Window 对象或 Document 对象间接访问的,比如:
var a = document.getElementById("txt"); document.getElementById("txt") 用于获取页面中 id="txt" 标签对应的 DOM 对象。
注意:在JavaScript中,对象名、属性名、方法名都是区分大小写的,如:“Math.PI”不能写成“math.pi”,“document.write”也不能写成“Document.write”。
this 关键字:
this 是对当前对象自己的引用,用它可直接调用当前对象的属性和方法。比如:
input type="radio" name="rr" value="A" onclick="sel(this.value)" / input 是一个HTML标签,但它同时也是一个 DOM 对象,其中的 this.value 就是引用这个 Input 对象的 value 属性值。 在return false;前加入window.scroll(0,360);
Code:
alert("请输入名称!");
window.scroll(0,360);
return false;  

上一个:请教高手一个JAVASCRIPT中原型的问题,请通俗解释如下原型PROTOTYPE:
下一个:javascript验证输入的是不是5到15的数字…… 帮看看那里出错啦…… 运行没反应呀!

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,