大家好!
我遇到这样一个问题,不知道怎么去解决。如代码:
<body onload="init();">
<input type="text" id="txt"/><br/>
<!--<div></div>-->//这是注释的
<input type="text" id="txt1"/>
</body>
我怎么能动态添加一个div放在那注释上的位置呢?我的意思是加一个div位置兼容问题。我添加div却不是我想要指定的位置。
我在js中写的是这样:
<script>
function init(){
var objDiv = document.createElement('DIV');
document.body.appendChild(objDiv);
}
</script>
但位置却是在后面,不是我想要的位置。如何实现呢?请大家帮忙解决。谢谢
我遇到这样一个问题,不知道怎么去解决。如代码:
<body onload="init();">
<input type="text" id="txt"/><br/>
<!--<div></div>-->//这是注释的
<input type="text" id="txt1"/>
</body>
我怎么能动态添加一个div放在那注释上的位置呢?我的意思是加一个div位置兼容问题。我添加div却不是我想要指定的位置。
我在js中写的是这样:
<script>
function init(){
var objDiv = document.createElement('DIV');
document.body.appendChild(objDiv);
}
</script>
但位置却是在后面,不是我想要的位置。如何实现呢?请大家帮忙解决。谢谢
var txt = document.getElementById("txt1");
txt.parentNode.insertBefore(objDiv,txt);
var txt=document.getElementID("txt1");
txt.parentNode.insertBefore(objdiv,txt);
还可以啊!
然后再加到这个DIV或者SPAN里也行.
当然.也可以直接用replaceChild之类换掉.
var top = obj.offsetTop;
while(obj != null && obj.offsetParent != null && obj.offsetParent.tagName != 'BODY'){
top += obj.offsetParent.offsetTop;
obj = obj.offsetParent;
}
return top;
}
function getAbsoluteLeft(obj){
var left = obj.offsetLeft;
while(obj != null && obj.offsetParent != null && obj.offsetParent.tagName != 'BODY'){
left += obj.offsetParent.offsetLeft;
obj = obj.offsetParent;
}
return left;
}
function getAbsoluteWidth(obj){
return obj.offsetWidth;
}
function getAbsoluteHeight(obj){
return obj.offsetHeight;
}
//objDoc是对于那个var objDoc = document.getElementById("txt1");
function divPosition(objDoc){
objDiv.style.left = getAbsoluteLeft(objDoc);
objDiv.style.top = getAbsoluteTop(objDoc)+getAbsoluteHeight(objDoc);
objDiv.style.width = getAbsoluteWidth(objDoc);
}
var txt=document.getElementID("txt1");
txt.parentNode.insertBefore(objdiv,txt);
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
<style>
.div{ background-color:#66CCFF; border:1px solid #006699;margin:4px;vertical-align:middle; width:180px; text-align:center;overflow: hidden;padding-top:10px; padding-bottom:10px;}
.addDV{ border:1px solid #339933; background-color:#99FF66; width:120px; height:20px;}
</style>
</head>
<body>
<input type="button" id="btn" value="弹出层" onclick="pop()">
<div class="div" id="one"><input type="text" id="txt"/></div><br />
<div class="div"><input type="text" id="txt1"/></div>
</body> </html>
<script>
//弹出层
function pop()
{
var arr=new Array();
arr= getObj("one");
var dv=document.createElement("div");
dv.setAttribute("id","Notes");
dv.setAttribute("class","addDV");
document.body.appendChild(dv);
Note = document.getElementById('Notes');
Note.innerHTML="i'm here!";
if(typeof(Note) == 'undefined')
{
alert("err")
}
Note.style.position="absolute";
Note.style.left=arr[0]+"px";
Note.style.top= (arr[1]+45)+"px";
document.getElementById('btn').disabled=true;
}
//计算层坐标
function getObj(id)
{
var element=document.getElementById(id)
var x = element.offsetLeft;
var y =element.offsetTop;
var rect=[0,0];
var el = element;
while(el!=null && el!=document.body)
{
rect[0]=rect[0]+el.offsetLeft;
rect[1]=rect[1]+el.offsetTop;
el=el.offsetParent;
}
x = rect[0];
y = rect[1];
var m = new Array()
m[0]=x;
m[1]=y;
return m;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
<style>
.div{ background-color:#66CCFF; border:1px solid #006699;margin:4px;vertical-align:middle; width:180px; text-align:center;overflow: hidden;padding-top:10px; padding-bottom:10px;}
.addDV{ border:1px solid #339933; background-color:#99FF66; width:120px; height:20px;}
</style>
</head>
<body>
<input type="button" id="btn" value="弹出层" onclick="pop()">
<div class="div" id="one"><input type="text" id="txt"/></div><br />
<div class="div"><input type="text" id="txt1"/></div>
</body> </html>
<script>
//弹出层
function pop()
{
var arr=new Array();
arr= getObj("one");
var dv=document.createElement("div");
dv.setAttribute("id","Notes");
dv.setAttribute("class","addDV");
document.body.appendChild(dv);
Note = document.getElementById('Notes');
Note.innerHTML="i'm here!";
if(typeof(Note) == 'undefined')
{
alert("err")
}
Note.style.border="1px solid #339933";
Note.style.backgroundColor="#99FF66";
Note.style.position="absolute";
Note.style.left=(arr[0]+10)+"px";
Note.style.top= (arr[1]+62)+"px";
document.getElementById('btn').disabled=true;
}
//计算层坐标
function getObj(id)
{
var element=document.getElementById(id)
var x = element.offsetLeft;
var y =element.offsetTop;
var rect=[0,0];
var el = element;
while(el!=null && el!=document.body)
{
rect[0]=rect[0]+el.offsetLeft;
rect[1]=rect[1]+el.offsetTop;
el=el.offsetParent;
}
x = rect[0];
y = rect[1];
var m = new Array()
m[0]=x;
m[1]=y;
return m;
}
</script>
但不能加载一个html页面,当时在csdn中提过问,没有人帮我解决。
后来自己发了好长的时间解决了。
可以在iframe中创建页面实现,可以不用加载页面。
var ifrm = document.getElementById("iframe");
ifrm.contentWindow.document.write("......");
这种形式可以创建一个html了。
请参考:
http://topic.csdn.net/u/20090604/13/05819f03-724d-4e5e-8378-6f5213e1a34f.htmldiv模拟下拉,还是比较容易的