【问题标题】:More than one variable in a javascript function?javascript函数中有多个变量?
【发布时间】:2023-03-18 00:17:02
【问题描述】:

标题可能不正确,我不知道如何巧妙地表达这个问题。可能与缺乏智能有关……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;
    }
}

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

【问题讨论】:

    标签: javascript function variables innerhtml


    【解决方案1】:

    document.getElementById('txt') 是一个 DOMNode 或 nulldocument.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;
        ...
    }
    

    【讨论】:

    • 谢谢!非常感激。现在将蹒跚学步学习javascript... ;)
    【解决方案2】:

    您可以一一检查。

    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;
        }
    }  
    

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      对 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;
           }
        }
      

      【讨论】:

      • 这段代码可能没有做你想做的事。在任何情况下,它都不等同于我的代码。 for 循环是个坏主意。
      猜你喜欢
      • 2012-04-30
      • 1970-01-01
      • 2012-11-20
      • 2011-06-21
      • 1970-01-01
      • 2019-04-21
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多