0

タイトルが正しくない可能性があります。質問をインテリジェントに表現する方法がわかりません。インテリジェンスの欠如に関係している可能性があります...anyhoo:CMSの一部として、HTMLフォームのテキストエリアに入力されたデータのプレビューを生成するこのjavascript関数があります。さて、フォームには明らかにこのテキストエリアよりも多くの部分が含まれているので、関数を拡張して「title」と「summary」の変数も含めたいと思います。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であるか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;
    ...
}
于 2013-03-09T00:02:51.030 に答える
0

フリッツの答えのテイク..

 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 に答える
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 に答える