Javascript 根据文本框的值隐藏文本框

Javascript 根据文本框的值隐藏文本框,javascript,html,canvas,textbox,Javascript,Html,Canvas,Textbox,我有一个画布,我可以在上面添加文本和图像层,在画布下面我有两个文本框,我在其中显示关于所选层的信息。我展示的是: X坐标 Y坐标 宽度 高度 字体 字号 字体颜色 滴度 角度 现在,由于图像层没有字体、字体大小和字体颜色,它现在将显示“未定义” 我使用此javascript代码在文本框中显示信息: document.getElementById('width').value = Math.round(layer.width*100)/100; document.getElementById(

我有一个画布,我可以在上面添加文本和图像层,在画布下面我有两个文本框,我在其中显示关于所选层的信息。我展示的是:

  • X坐标
  • Y坐标
  • 宽度
  • 高度
  • 字体
  • 字号
  • 字体颜色
  • 滴度
  • 角度
现在,由于图像层没有字体、字体大小和字体颜色,它现在将显示“未定义”

我使用此javascript代码在文本框中显示信息:

document.getElementById('width').value = Math.round(layer.width*100)/100;
document.getElementById('height').value = Math.round(layer.height*100)/100;
document.getElementById('x').value = layer.offsetX;
document.getElementById('y').value = layer.offsetY;
document.getElementById('color').value = layer.fontColor;
document.getElementById('color').style.color=layer.fontColor;
document.getElementById('font').value = layer.fontFamily;
document.getElementById('size').value = layer.fontSize;
document.getElementById('title').value = layer.title;
document.getElementById('angle').value = Math.round(layer.angle*100)/100;
问题:
当文本框包含“未定义”一词时,是否有任何方法隐藏文本框并使其消失?
也可以在方框前隐藏纯文本吗?(字体:,大小:,颜色)


画布的工作版本可以在

中找到,这里有一个简单的解决方案:

var value = // get the value from layer
if(typeof value === 'undefined') {
    // hide the box
}
因为看起来您没有使用jQuery,所以隐藏输入会更困难:

document.getElementById(id).style.display = 'none';
并展示:

document.getElementById(id).style.display = 'block';
使用jQuery,您可以执行以下操作:

$(id).show();
分别为:

$(id).hide();

以下是简单的解决方案:

var value = // get the value from layer
if(typeof value === 'undefined') {
    // hide the box
}
因为看起来您没有使用jQuery,所以隐藏输入会更困难:

document.getElementById(id).style.display = 'none';
并展示:

document.getElementById(id).style.display = 'block';
使用jQuery,您可以执行以下操作:

$(id).show();
分别为:

$(id).hide();

根据值===未定义或未定义,可以创建隐藏或显示元素的辅助函数:

function setElementValueById(id, value){
    var element = document.getElementById(id);
    if(element != null){
        element.style.display = value !== undefined ? '': 'none';
        element.value = value;
    }
}

// usage 
setElementValueById('font', layer.fontFamily);
编辑: 要隐藏标签,还可以将每个框及其标签分组到单个元素(div)中:

(基于您的代码笔示例)


根据值===未定义或未定义,可以创建隐藏或显示元素的辅助函数:

function setElementValueById(id, value){
    var element = document.getElementById(id);
    if(element != null){
        element.style.display = value !== undefined ? '': 'none';
        element.value = value;
    }
}

// usage 
setElementValueById('font', layer.fontFamily);
编辑: 要隐藏标签,还可以将每个框及其标签分组到单个元素(div)中:

(基于您的代码笔示例)


Thnx,这很有效。然而,我确实忘记了我的问题中的一些东西,是否也可以将纯文本隐藏在方框前?Thnx,这非常有效。然而,我确实忘记了我的问题中的一些东西,是否也可以在方框前隐藏纯文本?