JavaScript / HTML画布:清除文本框

时间:2015-04-28 12:54:35

标签: javascript html5 canvas

我一直在尝试通过HTML5画布使用Adobe Flash CC创建交互式地图。主要思想是:鼠标在地图上的对象上,右侧显示带有相应信息的文本框。问题是,我已经设法创建了一个文本框,但每次鼠标悬停时,文本框顶部都会一遍又一遍地显示,文本每次都变得越来越胖。如何在每次添加文本之前删除文本?也许你有其他建议吗? 这是代码:

function makeText(x, y, w, h, htmlText) {
// create and populate element
stage.removeChild(content);
stage.update();
var e = document.createElement("div");
e.style.fontSize = "14px";
e.style.fontFamily = "arial, verdana, sans-serif";
e.style.visibility = "hidden";
e.style.position = "absolute";
e.style.left = 0;
e.style.top = 0;
e.style.width = w + "px";
e.style.height = h + "px";
e.style.overflow = "auto";
e.style.overflowX = "hidden";
e.innerHTML = htmlText;

document.body.appendChild(e);
var content = new createjs.DOMElement(e);
content.x = x;
content.y = y;

return stage.addChild(content);
}

以下是我如何调用该函数:

  function fl_MouseOverHandler_5(){
    var canvas; 
    var text;
    var count = 0; 
 var kauno_pr = "text";
makeText(400,300,200,200,kauno_pr);   
}

我也尝试过添加stage.removeChild(content);在添加它之前,它似乎不起作用。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

var previousElement;
function fl_MouseOverHandler_5(){
    var canvas; 
    var text;
    var count = 0; 
    var kauno_pr = "text";

    if(previousElement){
        stage.removeChild(previousElement);
    }

    previousElement = makeText(400,300,200,200,kauno_pr);   
}

您只需将创建的元素存储在变量中。