2013-03-09 3 views
0

Название может быть неправильным, я не уверен, как правильно сформулировать вопрос. Может быть, связано с отсутствием интеллекта ... anyhoo: Как часть CMS, у меня есть эта функция javascript, которая генерирует предварительный просмотр данных, введенных в текстовую область HTML-формы. Теперь форма явно содержит больше частей, чем только это текстовое поле, и я хотел бы расширить функцию для включения переменных для «title» и «summary». Не зная javascript, я застрял в том, как это сделать. Так что, если какая-то душевная душа чувствует, что меня воспитывают (желательно с наглядным примером, а не просто «хорошо, что вы должны положить это в материал и покачивать ...»), я был бы очень благодарен.В переменной javascript имеется более одной переменной?

Функция у меня есть это:

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

поле формы, указанное в заголовке имеет имя «название» и краткое текстовое поле называется «sumtxt» так воображаемая функция будет что-то вроде:

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

... но это не выглядит особенно правильным, даже для меня. Предложения? Спасибо.

ответ

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; 
    ... 
} 
+0

Спасибо! Очень признателен. Будет теперь уклоняться, чтобы узнать javascript ...;) –

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

Надеется, что это полезно.

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

Этот код, вероятно, не делает того, что вы хотите. В любом случае это не эквивалентно моему коду. Цикл 'for' - плохая идея. – Halcyon

Смежные вопросы