Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找动态创建的div_Javascript_Dom_Firefox Addon - Fatal编程技术网

Javascript 查找动态创建的div

Javascript 查找动态创建的div,javascript,dom,firefox-addon,Javascript,Dom,Firefox Addon,我想更改动态创建的div 但我不能让它工作 这是不断创造新的div var div = document.getElementById('windowx'); var btn; var doc = content.document if (div) { div = document.getElementById('windowx') div.innerHTML = "something new" } else { doc = content.document div = doc

我想更改动态创建的div 但我不能让它工作 这是不断创造新的div

var div = document.getElementById('windowx');
var btn;
var doc = content.document

if (div)
{
  div = document.getElementById('windowx')
  div.innerHTML = "something new"
}
else
{
  doc = content.document
  div = doc.body.appendChild(doc.createElement("div"))
  div.setAttribute("id", "windowx")
  div.setAttribute("style",
    "position: fixed; top: 100px; left: 100px; width: 20em;"
    + "border: 2px outset orange; background-color: cornsilk;"
    )
  btn = div.appendChild(doc.createElement("button"))
  btn.setAttribute("style", "position: absolute; bottom: 1ex; right: 1ex;")
  btn.setAttribute("onclick", "document.body.removeChild(this.parentNode)")
  btn.appendChild(doc.createTextNode("Zamknij"))
}

对我来说,它被
content.document
阻塞了,窗口对象没有content属性,所以我不确定您引用的是什么。清理了一点,看起来很管用。注意,我直接添加了click处理程序,而不是将其设置为属性。请参见此处,我使用jQuery按钮单击处理程序触发它:


现在很清楚它是针对Firefox插件的:

document.getElementById
将在浏览器UI而不是网页中搜索该元素。但稍后您将向页面添加元素。因此,您必须在页面中搜索该元素:

var div = content.document.getElementById('windowx');
此外,您正在进行一些不必要的方法调用。以下是代码的更清晰版本:

var doc = content.document,
    div = doc.getElementById('windowx'),
    btn;

if (div) {
  div.innerHTML = "something new"
}
else {
  div = doc.body.appendChild(doc.createElement("div"))
  div.setAttribute("id", "windowx")
  div.setAttribute("style",
    "position: fixed; top: 100px; left: 100px; width: 20em;"
    + "border: 2px outset orange; background-color: cornsilk;"
    )
  btn = div.appendChild(doc.createElement("button"))
  btn.setAttribute("style", "position: absolute; bottom: 1ex; right: 1ex;")
  btn.setAttribute("onclick", "document.body.removeChild(this.parentNode)")
  btn.appendChild(doc.createTextNode("Zamknij"))
}

尝试
var div=content.document.getElementById('windowx')。为什么要用相同的值多次初始化变量?你对分号过敏吗?是的Firefox插件:]添加内容。helpedIt可能是在Firefox插件的上下文中。。。至少我是这么想的。我想它可能在FF中工作,但我使用的是Safari。没有在FF中尝试,也不清楚OP是否使用FF;有没有一种简单的方法可以在光标位置创建div?我的意思是类似div.setAttribute(“style”,“position:fixed;top:mouseX;left:mouseY;width:20em;”“+”边框:2px橙色;背景色:cornsilk;”)?我想位置应该是
绝对的
,是的,如果你有坐标,你可以这样做。。。
var doc = content.document,
    div = doc.getElementById('windowx'),
    btn;

if (div) {
  div.innerHTML = "something new"
}
else {
  div = doc.body.appendChild(doc.createElement("div"))
  div.setAttribute("id", "windowx")
  div.setAttribute("style",
    "position: fixed; top: 100px; left: 100px; width: 20em;"
    + "border: 2px outset orange; background-color: cornsilk;"
    )
  btn = div.appendChild(doc.createElement("button"))
  btn.setAttribute("style", "position: absolute; bottom: 1ex; right: 1ex;")
  btn.setAttribute("onclick", "document.body.removeChild(this.parentNode)")
  btn.appendChild(doc.createTextNode("Zamknij"))
}