hogehoge foobar Blog Style Beta

Web,Mac,Linux,JavaScript,Perl,PHP,RegExp,Git,Vim,Redmineなど技術的なことのメモや、ちょっと便利そうなものの紹介をしています。

onfocusでツールチップ表示

久しぶりにJavaScriptです。
テキストボックス等でフォーカスがあたった時にツールチップを表示するコードを考えてみました。

var addListener = ( window.addEventListener ?
    function(elm, event, func){
        elm.addEventListener(event, func, false);
    } :
    function(elm, event, func){
        elm.attachEvent('on' + event, func); //IE
    }
);

/* ツールチップを生成 */
var createTip = function() {
    var element = document.createElement('div');
    element.id = "carender_tip";
    element.innerHTML = "hogehoge";
    element.style.backgroundColor = 'white';
    element.style.visibility = 'hidden';        /* 表示を隠しておく */
    var objBody = document.getElementsByTagName("body").item(0);
    objBody.appendChild(element);               /* bodyの子要素として追加 */
}

/* ツールチップの表示 */
var visibleTip = function() {
    var element = document.getElementById('carender_tip');
    var top = this.offsetTop;                       /* 対象要素のTOP座標 */
    var left = this.offsetLeft + this.offsetWidth;  /* 対象要素のLEFT座標 + 横幅 */
    element.style.position = 'absolute';
    element.style.top = top + "px";                 /* チップのTOP座標(pxは必須) */
    element.style.left = left + "px";               /* チップのLEFT座標(pxは必須) */
    element.style.visibility = 'visible';
}

/* ツールチップの非表示 */
var hiddenTip = function() {
    var element = document.getElementById('carender_tip');
    element.style.visibility = 'hidden'
}

/* 表示/非表示のイベントを設定 */
var addEvent = function(){
    var classname = "gfycar";
    createTip();
    var a = document.getElementsByClassName(classname); /* 所定のクラス名のリストを取得 */
    for (i = 0; i