在这里记一下,怕以后找不到了
(不断添加中。。。)
1. 获得元素大小和位置
function getElementPosition(element) {
var result = new Object();
result.x = 0;
result.y = 0;
result.width = 0;
result.height = 0;
if (element.offsetParent) {
result.x = element.offsetLeft;
result.y = element.offsetTop;
var parent = element.offsetParent;
while (parent) {
result.x += parent.offsetLeft;
result.y += parent.offsetTop;
var parentTagName = parent.tagName.toLowerCase();
if (parentTagName != "table" &&
parentTagName != "body" &&
parentTagName != "html" &&
parentTagName != "div" &&
parent.clientTop &&
parent.clientLeft) {
result.x += parent.clientLeft;
result.y += parent.clientTop;
}
parent = parent.offsetParent;
}
}
else if (element.left && element.top) {
result.x = element.left;
result.y = element.top;
}
else {
if (element.x) {
result.x = element.x;
}
if (element.y) {
result.y = element.y;
}
}
if (element.offsetWidth && element.offsetHeight) {
result.width = element.offsetWidth;
result.height = element.offsetHeight;
}
else if (element.style && element.style.pixelWidth && element.style.pixelHeight) {
result.width = element.style.pixelWidth;
result.height = element.style.pixelHeight;
}
return result;
}
2. 简单封装的xmlhttp
var HSL = new Object();
HSL.Ajax = new Object();
HSL.Ajax.READY_STATE_UNINITIALIZED = 0;
HSL.Ajax.READY_STATE_LOADING = 1;
HSL.Ajax.READY_STATE_LOADED = 2;
HSL.Ajax.READY_STATE_INTERACTIVE = 3;
HSL.Ajax.READY_STATE_COMPLETE = 4;
HSL.Ajax.Request = function(url, params, oncomplete, onerror)
{
this.url = url;
this.params = params;
this.req = null;
this.oncomplete = oncomplete;
this.onerror = (onerror) ? onerror : this.defaultError;
this.sendRequest(url);
}
HSL.Ajax.Request.prototype =
{
sendRequest : function(url)
{
if(window.XMLHttpRequest)
{
this.req = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
this.req = new ActiveXObject("Microsoft.XMLHTTP");
}
if(this.req)
{
try
{
var sender = this;
this.req.onreadystatechange = function()
{
sender.onReadyState.call(sender);
}
this.params = this.params + "&t=" + (new Date()).getTime();
this.req.open("GET", url + "?" + this.params, true);
this.req.send(null);
}
catch(err)
{
this.onerror.call(this);
}
}
},
onReadyState : function()
{
var req = this.req;
var ready = req.readyState;
if(ready == HSL.Ajax.READY_STATE_COMPLETE)
{
var httpStatus = req.status;
if(httpStatus == 200 || httpStatus == 0)
{
this.oncomplete.call(this, req.responseText);
}
else
{
this.onerror.call(this);
}
}
},
defaultError : function()
{
//alert("Callback error!");
return;
}
}
3.获得url后面带的参数
function getArgs()
{
var args = new Object();
var query = location.search.substring(1);
var pairs = query.split('&');
for(var i=0; i<pairs.length; i++)
{
var pos = pairs[i].indexOf('=');
if(pos == -1)
continue;
var argname = pairs[i].substring(0,pos);
var value = pairs[i].substring(pos+1);
args[argname] = decodeURIComponent(value);
}
return args;
}
使用:
http://www.test.aspx?id=55&name=test
var args = getArgs();
alert(args["id"]);
在论坛上也看到更加简便的方法,利用正则表达式
function getQueryString(url,key)
{
var reg = new RegExp(".*?"+ key+"=([^&]*)?&.*?$"+"|.*?"+key+"=([^&]*)?$|");
if(reg.exec(url) == url) return "";
return url.replace(reg,"$1$2");
}
var url = document.location.toString();
alert(getQueryString(url,"id"));
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?