我想写一个浏览器插件,在按下某个键后可以在所有可用连接上显示一个标签我是这样实现的:创建p元素,并添加到body子节点中
现在的问题是,按下键后标签确实创建了,但是不能显示出来。而如果我把元素添加到可用链接的子节点中,则可以显示出来,但是会继承上层的样式,这和我的初衷有差别。。我是网页开发小白,求教各位大大这怎么弄??
部分代码如下:window.addEventListener('keyup',hehe,false)
var a = new Array();
if (key == 70 ){                    //judging if pressed 'f'
    a = document.getElementsByTagName("a")
    for (var i=0;i<a.length;i++){
        top = a[i].offsetTop;
left = a[i].offsetLeft;
    //创建标签
        var tag = document.createElement("p");
        document.body.appendChild(tag);
        tag.style.position = "absolute";
tag.style.top = top;
tag.style.left = left;
     }
}JavaScript

解决方案 »

  1.   

    offsetTop只是相对父容器的top值,不是相对整个网页的。left同理。
      

  2.   

    var top;
    var obj = XX;
    while(obj != "none") {
      top = top.offsetTop;
      obj = obj.offsetParent;
    }
      

  3.   


    错了,是
    var top = 0;
    var obj = XX;
    while(obj != null) {
      top += top.offsetTop;
      obj = obj.offsetParent;
      

  4.   

    window.addEventListener('keyup',hehe,false)
    var a = new Array();
    if (key == 70 ){                    //judging if pressed 'f'
        a = document.getElementsByTagName("a")
        for (var i=0;i<a.length;i++){
            top = a[i].offsetTop;
        left = a[i].offsetLeft;
        //创建标签
            var tag = document.createElement("p");
            document.body.appendChild(tag);
            tag.style.position = "absolute";
        tag.style.top = top;
        tag.style.left = left;
        tag.style.height =100px;
      tag.style.width =100px;
    tag.style.background = 'black';     }
    }用这个就行了
      

  5.   

    你生成的P标签里面没内容。在里面加点啥东西吧。或者加个背景色,display:block
      

  6.   

    谢谢各位,暂时搞定了。
    原来是style.top设置的时候只有数字,没加'px'……