Javascript 查找动态创建的div
我想更改动态创建的div 但我不能让它工作 这是不断创造新的divJavascript 查找动态创建的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
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"))
}