我正在尝试为此功能添加一个close me链接。这样做的方法是,将所有这些代码粘贴到书签中而不添加换行符,书签会在屏幕上显示一个蓝色框。
到目前为止,我所创建的close me链接是我创建的“eleCloseLink”节点:
javascript:(
function(){
var pagebody = document.evaluate( '/html/body' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue;
if (pagebody != null) {
var node = document.createElement("DIV");
node.style.position="fixed";
node.style.color="white";
node.style.background="blue";
node.style.width="350px";
node.style.top="50px";
node.innerHTML = "<br>BLUE BOX<br>2<br>";
var box = pagebody.appendChild(node);
/* Creating close link here */
var eleCloseLink = document.createElement("a");
eleCloseLink.setAttribute('href', 'javascript:( function(){ node.parentNode.removeChild(node); })();');
eleCloseLink.innerHTML = 'close me';
box.appendChild(eleCloseLink);
}
})();
到目前为止,我已经尝试过这10种不同的方式,但没有一种方法成功。最近的方法是将javascript:( function(){ node.parentNode.removeChild(node); })();
放在a中,这也不起作用。我觉得这应该是最常见的代码之一,因为我经常在网站上看到它们,因此应该有很多信息。我的场景可能比大多数b / c更具体,我创建的框只是一个DIV元素,我本质上是试图删除DIV元素(我也试过使用它)和我的关闭链接。如果有人对如何建立这个关闭我的链接有任何建议,请告诉我。
答案 0 :(得分:0)
为了解决这个问题,我创建了一个click事件监听器,它调用了一个删除对象的函数。为此,我在我试图删除的DIV对象中添加了 id 属性。触发click事件时,close函数将使用 id 属性引用XPATH来评估div对象。然后我就能在该对象上运行remove()方法。
结束片段:
/*Create Link in box to close box*/
var eleCloseLink = document.createElement("a");
eleCloseLink.innerHTML = '|CLOSE|';
eleCloseLink.addEventListener("click", CloseBox, false);
eleCloseLink.background = 'red';
box.appendChild(eleCloseLink);
}
/*Function to close the box */
function CloseBox() {
document.evaluate( "//*[@id='thebox']" ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue.remove(this);
}
仍然不完全确定我是否必须在remove()方法中使用“this”,因为我在对象本身上调用了remove()方法。然而,这现在正在发挥作用。