0

我在这两个事件上遇到了一些问题,它们工作正常,但是我遇到了一个问题:我在 div 中有一个 div。当内部 div 成为焦点时,我希望将一组样式按钮附加到外部 div。但是,当我尝试单击按钮时,它会使内部 div 失去焦点并使按钮消失。我希望它们在失去焦点时消失,但我不想在按下按钮时失去焦点。抱歉,如果这有点令人困惑,这里有一些代码和它的 jsfiddle:

function addButtons() {
  var node = document.createElement('div');
  var obj = document.getElementById('container');
  node.setAttribute('id', 'buttons');
  node.innerHTML = '<input type="button" value="B" onClick="document.execCommand(\'bold\',false)" />';
  obj.appendChild(node); 
}

function removeButtons(id) {
  var obj = document.getElementById('container');
  obj.removeChild(obj.childNodes[3]);
}

http://jsfiddle.net/bnjGE/2/

如果我删除 removeButtons() 函数,它工作正常,但会创建多个按钮。

我可以试着把事情弄清楚,问一下。

谢谢

4

2 回答 2

0

您可以在按钮 f.ex 上添加return false;有关事件的声明:mousedown

node.getElementsByTagName('input')[0].onmousedown = function(e) {
    return false;
};

http://jsfiddle.net/bnjGE/8/

于 2012-12-29T03:26:20.757 回答
0
document.onclick = function(e){
    console.log(e.target);
    if(e.target.id != 'buttons' && e.target.parentNode.id != 'buttons' && e.target.id != 'textarea'){
        removeButtons();
    }
}​

http://jsfiddle.net/bnjGE/7/ 也许这是一个解决方案,但并不完美。

于 2012-12-29T03:28:15.077 回答