js获取元素到文档区域document的坐标方法

js获取元素到文档区域document的坐标方法,第1张

获取页面中元素到文档区域document的横向 纵向坐标的两种方法及其比较

在js控制元素运动的过程中 对于页面元素坐标位置的获取是经常用到的 这里主要总结下两种方法

一 通过叠加元素对象和它的offsetParent(如果存在)的offsetLeft/offsetTop属性来实现

在阅读javascript高级程序设计第三版DOM部分时 了解到要获取某个元素在页面上的偏移量 需要将这个元素的offsetLeft和offsetTop与其offsetParent的相同属性相加 一直循环直至根元素 所以 要得到元素到文档区域的坐标位置 只需通过while循环不断获取offsetParent的offsetLeft/offsetTop直到offsetParent = null为止

js代码

代码如下:

// 获取元素到文档区域的坐标

function getPosition(element) {

var actualLeft = element offsetLeft

actualTop = element offsetTop

current = element offsetParent; // 取得元素的offsetParent

// 一直循环直到根元素

while (current !== null) {

actualLeft += current offsetLeft;

actualTop += current offsetTop;

current = current offsetParent;

}

// 返回包含left top坐标的对象

return {

left: actualLeft

top: actualTop

};

}

例子截图

firebug下测试结果截图 (注 其他浏览器已通过测试!)

二 通过 getBoundingClientRect() 方法实现

getBoundingClientRect方法用于获得页面中某个元素的左 上 右和下分别相对浏览器视窗window的位置 返回的是一个对象 该对象有四个属性 top left right bottom;该方法原本是IE Only的 但是FF +和Opera +已经支持了该方法 可以说在获得页面元素位置上效率有很大的提高 另外 该方法避免使用while循环 而是直接获取数值来实现 比第一种方法性能要好 特别是在复杂的页面上更为明显

js代码

代码如下:

// 获取元素到文档区域的坐标

function getPosition(element){

var dc = document

rec = element getBoundingClientRect()

_x = rec left // 获取元素相对浏览器视窗window的左 上坐标

_y = rec top;

// 与或body元素的滚动距离相加就是元素相对于文档区域document的坐标位置

_x += dc documentElement scrollLeft || dc body scrollLeft;

_y += dc documentElement scrollTop || dc body scrollTop;

return {

left: _x

top: _y

};

}

经测试 该方法与第一种方法获取元素相对于document的坐标大小相同 对于IE低版本浏览器 存在一些差异

注意 记得要累加上(IE除外)或body(针对IE)元素的水平或垂直滚动距离!

lishixinzhi/Article/program/Java/JSP/201311/20207

数据类型可以直接用typeof来获取。

typeof返回数据类型,返回结果为字符串,根据字符串可以知道具体的类型。

例如:"var a=1;typeof a;",则返回"number",即数字类型。

使用css控制页面有4种方式,分别为行内样式(内联样式)、内嵌式、链接式、导入式。

行内样式(内联样式)即写在html标签中的style属性中,如<div style="width:100px;height:100px;"></div>

内嵌样式即写在style标签中,例如<style type="text/css">div{width:100px; height:100px}</style>

链接式即为用link标签引入css文件,例如<link href="testcss" type="text/css" rel="stylesheet" />

导入式即为用import引入css文件,例如@import url("testcss")

如果想用javascript获取一个元素的样式信息,首先想到的应该是元素的style属性。但是元素的style属性仅仅代表了元素的内联样式,如果一个元素的部分样式信息写在内联样式中,一部分写在外部的css文件中,通过style属性是不能获取到元素的完整样式信息的。因此,需要使用元素的计算样式才获取元素的样式信息。

getElementById()

// 通过ID来取得元素,所以只能访问设置了ID的元素,比如说有一个DIV的ID为docid:

// <div id="docid"></div>

// 那么就可以用getElementById("docid")来获得这个元素。getElementsByName()

// 通过NAME来获得元素,DOCUMENT中元素的NAME可以重复,如果一个文档中有两个以上的标// 签NAME相同,那么getElementsByName()就可以取得这些元素组成一个数组。

// 比如有两个DIV:

// <div name="docname" id="docid1"></div>

// <div name="docname" id="docid2"></div>

// 那么可以用getElementsByName("docname")获得这两个DIV,用getElementsByName("docname")[0]访问第一个DIV。getElementsByTagName()

// 通过TAGNAME(标签名称)来获得元素,一个DOCUMENT中会有相同的标签,所以这个方法也是取得一个数组。

// 可以用 getElementsByTagName("div")来访问它们,用getElementsByTagName("div")[0]访问第一个 DIV,用getElementsByTagName("div")[1]访问第二个DIV。

本文实例讲述了JavaScript获取页面中第一个锚定文本的方法。分享给大家供大家参考。具体如下:

下面的JS代码通过documentarchors数组获取第一个archor的innerHTML

<!DOCTYPE

html>

<html>

<body>

<a

name="html">jb51net</a><br>

<a

name="css">CSS

Tutorial</a><br>

<a

name="xml">XML

Tutorial</a>

<p>innerHTML

of

the

first

anchor:

<script>

documentwrite(documentanchors[0]innerHTML);

</script>

</p>

</body>

</html>

上面的代码输出:

jb51net

希望本文所述对大家的javascript程序设计有所帮助。

javascript获取表单中的值?

如获取form 表单下<input type='text' name='filename'>中的值

两种方法:

1、documentgetElementById("filename")value

2、documentformfilenamevalue

lotus的表单中,通过JavaScript获取表单中的指定域值?

js:documentforms[0]xxvalue就可以了

xx为表单中的域的名称!

如何用js获取表单中的值

给表单中的元素设置id属性,js:

var value = documentgetElementById("你的元素的id")value;

php如何获取表单中textarea的值?

<form action="dophp" method="post">

<input type=textarea name=intext/>

<input type=submit value="submit"/>

</form>

dophp

<php

$intext = $_POST['intext'];

怎样获取form表单中input的值

给input添加 id 例如 <input id="myInput" value="" type=text/>

var aa = documentgetElementById("myInput")val();或者用jquery $("#myInput")val();

ExtJS中怎样获取Form表单中的每一项的值

ExtJS中有事需要获得Form表单的值,根据API可知 getValues() 可以获得单签Form表单中所有 Name 值的一个对象。

片段代码如下:

var formValues=formpanelgetForm()getValues(); 获取表单中的所有Name键/值对对象

alert(formValues["firstname"]); 输出表单中 firstname 字段的值

consolelog(formValues); 输出结果是表单中的所有Name键/值对的一个对象

整体代码如下:

/

Created with JetBrains PhpStorm

User: std

Date: 13-6-9

Time: 上午10:55

To change this template use File | Settings | File Templates

/

ExtonReady(function(){

var formpanel=Extcreate("ExtformPanel",{

title:"Dynamic Form",

draggable:true,

frame:true,

width:330,

height:255,

autoHeight:true,

bodyPadding:"7 5 7 5",

items:[{

xtype:"fieldset",

frame:true,

title:"Contact Information",

defaultType: 'textfield',

defaults:{xtype:"textfield",labelWidth:80,labelAlign:"right",width:280},

items:[{

fieldLabel:"First Name",emptyText:"First Name",name:"firstname"

},{

fieldLabel:"Last Name",emptyText:"Last Name",name:"lastname"

},{

fieldLabel:"Company",emptyText:"Company",name:"pany"

},{

fieldLabel:"Email",emptyText:"Email",name:"email"

},{

fieldLabel:"State",xtype:"bobox",emptyText:"请选择",name:"state"

},{

fieldLabel:"Date of Birth",xtype:"datefield",emptyText:"请选择日期",name:"dateofbirth"

}]

}],

buttons:[

{text:"确定",handler:function(){

var formValues=formpanelgetForm()getValues();

alert(formValues["firstname"]);

consolelog(formValues);

}},

{text:"取消"}

]

});

formpanelrender(ExtgetBody());

});

直接在每一项 的组件里面 添加 一个 id

id:'textId'

ExtgetCmp('textId')getValue()

怎样用jQuery获取表单中的值并赋给数组

类似这样

var i=0;

var fields = $("input")serializeArray();

jQueryeach(fields, function(index, field){inf[i]=fieldvalue;i++;});

在php中怎样获取表单中文件域的值

获取到的POST、GET是数组形式的值,需要通过键值来详细获取相应的值

比如: indexphp 页面

下面是POST方法

<form name=form1 method="post" action="indexphp">

<input type=text name=contents value="">

<input type=submit value="提交">

</form>

<php

获取表单提交的数据

$contents = $_POST['contents'];

echo $contents;

>

也可以是下面是GET方法

<form name=form1 action="indexphp">

<input type=text name=contents value="">

<input type=submit value="提交">

</form>

<php

获取表单提交的数据

$contents = $_GET['contents'];

echo $contents;

>

POST相对于GET方法,更好一些,可以提交大量数据,以及更安全些。

用typeof(var) 来返回一个数据类型\x0d\返回的可能值有\x0d\'undefined- 如果变量是 Undefined 类型的\x0d\'boolean- 如果变量是 Boolean 类型的\x0d\'number- 如果变量是 Number 类型的\x0d\'string- 如果变量是 String 类型的\x0d\'object- 如果变量是一种引用类型或 Null 类型的\x0d\\x0d\if(typeof(123)=='number')alert('this is a number')\x0d\以此类推

javascript

获取event

先从一个简单的例子说起,一个简单的button控件如下:

<input

type='button'

name='mybtn'

id='mybtn'

onclick='myFunc()'/>

然后为其注册事件,这样的情况,怎么在javascript里获取event呢,特别是firefox的情况。请看:

<script

type='text/javascript'>

function

myFunc(){

var

ev

=

windowevent

||

argumentscalleecallerarguments[0]

,et

=

evsrcElement

||

evtarget;

alert(ettagName);

}

</script>

不出意外的话,在ie/ff下,上面例子都将输出INPUT,即是触发click事件节点的标签名,ie的event获取这里就不说了,重点说说ff下的情况。

这里的argumentscalleecallerarguments[0]看起来又长又怪,为什么在firefox的情况下,这个东西就是event呢?

首先得了解argumentscallee是什么东西,caller又是什么样的属性?

argmentscallee就是函数体本身,argumentscalleecaller就是函数体的调用函数体

简单例子如下:

<script

type='text/javascript'>

function

a(){

b();

}

function

b(){

alert(b

===

argumentscallee)

alert(bcaller

===

a)

alert(argumentscalleecaller

===

a)

}

a();

</script>

不出意外,上面的例子将输出3个true,表明当a()调用时,函数b与函数a的关系。

好,弄清楚了argumentscallee与caller,我们再把原先的例子改改

<script

type='text/javascript'>

function

myFunc(){

alert(argumentscalleecallertoString())

var

ev

=

windowevent

||

argumentscalleecallerarguments[0]

,et

=

evsrcElement

||

evtarget;

}

</script>

我们把argumentcalleecaller的函数体输出,看看到底在ie和ff下有何区别

可以看到ie下输出为

function

anonymous(){

myFunc()

}

ff下输出为

function

onclick(event){

myFunc();

}

由此看出在html控件中直接注册事件在ie/ff下表现的不同,

ie下定义了一个匿名函数,内部再执行用户定制的函数(myFunc),而ff下则有所

不同,首先ff下定义了一个与节点事件同名的函数,这里是onclick事件,所以是function

onclick,然后event作为一个参数传入,内部再执行myFunc

所以当事件触发时,在myFunc里,argumentcalleecaller就是指向function

onclick,当然,argumentcalleecallerarguments[0]即为event了

以上这篇火狐和ie下获取javascript

获取event的方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

以上就是关于js获取元素到文档区域document的坐标方法全部的内容,包括:js获取元素到文档区域document的坐标方法、JavaScript数据类型怎么获取、如何javascript获取css中的样式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9343924.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存