0

标题可能不正确,我不知道如何聪明地表达这个问题。可能与缺乏智能有关……anyhoo:作为 CMS 的一部分,我有这个 javascript 函数,它可以生成输入到 HTML 表单 textarea 中的数据的预览。现在,表单显然包含更多的部分,而不仅仅是这个文本区域,我想扩展该函数以包括“标题”和“摘要”的变量。不知道javascript,我不知道如何做到这一点。因此,如果有任何善良的灵魂想要教育我(最好是通过视觉示例,而不仅仅是“你必须把东西放在东西里并摆动......”),我将不胜感激。

我的功能是这样的:

// generate preview
function updatePreview() {
    if (document.getElementById('txt')) {
    var body = document.getElementById('txt').value;
    document.getElementById('preview').innerHTML = body;
    }
}

标题的表单字段命名为“title”,摘要文本区域命名为“sumtxt”,因此想象的函数类似于:

// generate preview
function updatePreview() {
    if (document.getElementById('title')+('txt')+('sumtxt')) {
    var body = document.getElementById('title')+('txt')+('sumtxt').value;
    document.getElementById('preview').innerHTML = body;
    }
}

...但这看起来并不特别正确,即使对我来说也是如此。建议?谢谢。

4

3 回答 3

1

document.getElementById('txt')是 DOMNode 或null,document.getElementById('txt').value是字符串,所以只需:

if (document.getElementById('title') !== null && document.getElementById('txt') !== null && document.getElementById('sumtxt') !== null) {
    var body = document.getElementById('title').value + document.getElementById('txt').value + document.getElementById('sumtxt').value;
    ...
}
于 2013-03-09T00:02:51.030 回答
0

你可以一一检查。

function updatePreview() {
    var body = "";
    if (document.getElementById('title')) {
        body += document.getElementById('title').value;
    }
    if (document.getElementById('txt')) {
        body += document.getElementById('txt').value;
    }
    if (document.getElementById('sumtxt')) {
        body += document.getElementById('sumtxt').value;
    }
    document.getElementById('preview').innerHTML = body;
}  

或者,您可以编写一个支持函数:

function getElementValueById(id){
    var node = document.getElementById(id);
    var value = null;
    if (node) {
        value = node.value;
    }
    return value;
}  

在 updatePreview() 中:

function updatePreview() {
    var title = getElementValueById("title");
    var txt = getElementValueById("txt");
    var sumtxt = getElementValueById("sumtxt");
    if(title && txt && sumtxt){
        document.getElementById('preview').innerHTML = title + txt + sumtxt;
    }
}  

希望它有帮助。

于 2013-03-09T05:08:38.543 回答
0

对 Frits 的回答..

 var eleholder = ['title','txt','sumtxt'], body= "";
 for(i=0;i<eleholder.length;i++){
     if(document.getElementById(eleholder[i]) !== null){
         body += document.getElementById(eleholder[i]).value;
     }else{
       body = "";
       break;
     }
  }
于 2013-03-09T05:39:55.267 回答