2012-12-04 1 views
0

У меня есть следующая функция ниже, и она отлично работает, когда все 3 вара не являются нулевыми, однако как они могут быть изменены так, что когда любая переменная (tel, fax, cell) равна null, это строка, содержащая нулевую переменную, не записывается?Динамически воспроизводящие Vars на веб-странице

Current scenario: 
T. 123-4567-8910 
F. 987-654-3210 
C. 
------------------------------- 
Desired scenario: 
T. 123-4567-8910 
F. 987-654-3210 
------------------------------- 
<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript"> 
function test() { 

var tel = "123-4567-8910" 
var fax = "987-654-3210" 
var cell = "" 

var html = 
     '<div>T. '+ tel +'</div>\n' + 
     '<div>F. '+ fax +'</div>\n' + 
     '<div>C. '+ cell +'</div>' 

document.write(html) 

} 
</script> 
</head> 
<body> 
<a href="javascript:test()">test</a> 
</body> 
</html> 

ответ

1

Позвольте мне представить вам условные операторы:

var html = ''; 
if (tel) { 
    html += '<div>T. '+ tel +'</div>\n'; 
} 
if (fax) { 
    html += '<div>F. '+ fax +'</div>\n'; 
} 
if (cell) { 
    html += '<div>C. '+ cell +'</div>\n'; 
} 
document.write(html) 

Хотя document.write() обычно считается плохой идеей. Вы можете узнать больше об этом here.

+0

Я думаю, что 'document.write' отлично вписывается в HTML sin когда документ открыт (не то, чтобы я когда-либо использовал его). Проблема в том, что вы пытаетесь использовать его после загрузки документа. Но теперь я замечаю, что 'document.write' находится в вызове функции (событие click), где его не следует использовать – Ian

+0

@Ian Это также одна из проблем. – Jivings

+0

Что еще вы имеете в виду? Из ссылки текст «не работает в документах XHTML»? – Ian

0

Попробуйте это:

<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript"> 
     function test() { 
      var tel = "123-4567-8910"; 
      var fax = "987-654-3210"; 
      var cell = ""; 

      var html = ""; 

      if (tel == "") { 
       html = html + '<div>T. '+ tel +'</div>\n'; 
      } 
      if (fax == "") { 
       html = html + '<div>F. '+ fax +'</div>\n'; 
      } 
      if (cel == "") { 
       html = html + '<div>C. '+ cel +'</div>\n'; 
      } 
      document.append(html); 
     } 
    </script> 
</head> 
<body> 
<a href="javascript:test()">test</a> 
</body> 
</html> 

Пожалуйста, не забудьте принять правильный ответ, и upvote любые ответы/комментарии, которые являются полезными для вас.

+0

Что это? В JavaScript нет функции 'empty()'. – Jivings

+0

Yikes, вы правы - пишите слишком много php. Измененный. – crashwap

+0

Да, и так было '. =' ... Так много языков, так мало времени. Спасибо, что спаслись. – crashwap

0

Вы должны проверить каждую переменную:

var html = 
    ((tel)?'<div>T. '+ tel +'</div>\n':'') + 
    ((fax)?'<div>F. '+ fax +'</div>\n':'') + 
    ((cell)?'<div>C. '+ cell +'</div>':'') ; 
document.write(html); 

Как это работает:

(tel)?'<div>T. '+ tel +'</div>\n':'' 

означает: если телефон не пусто/нуль, то '<div>T. '+ tel +'</div>\n' еще ''

Демо: http://jsfiddle.net/gHdy8/

+0

Факс не был пустым, поэтому я попробовал ваш, и только телефон был написан. – user1451890

+0

@ user1451890 некоторые скобки отсутствовали, извините за это. Исправлено сейчас, и демо-версия добавлена. – Christophe

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