Почему моя функция работает только один раз (выполнение задания document.write())?

#javascript

#javascript

Вопрос:

В моем html-файле я должен отобразить графики разных акций в разных местах документа. Я написал исходный код функции javascript (ticker) для отображения диаграммы «ticker». Вот первая часть моего HTML-документа:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="CLP_style.css" rel="stylesheet" type="text/css">
<title>The XXXXXX Daily</title>
<script type="text/javascript">
function source(ticker)
{
                var d=new Date();
                var month=new Array(12);
                month[0]="01";
                month[1]="02";
                month[2]="03";
                month[3]="04";
                month[4]="05";
                month[5]="06";
                month[6]="07";
                month[7]="08";
                month[8]="09";
                month[9]="10";
                month[10]="11";
                month[11]="12";
                var startmonth;
                var startyear;
                var endmonth;
                endmonth=month[d.getMonth()];
                switch (endmonth) 
                    {
                    case "01":
                        startmonth="11";
                    case "02":
                        startmonth="12";
                    case "03":
                        startmonth="01";
                    case "04":
                        startmonth="02";
                    case "05":
                        startmonth="03";
                    case "06":
                        startmonth="04";
                    case "07":
                        startmonth="05";
                    case "08":
                        startmonth="06";
                    case "09":
                        startmonth="07";
                    case "10":
                        startmonth="08";
                    case "11":
                        startmonth="09";
                        startyear="2010";
                    case "12":
                        startmonth="10";
                        startyear="2010";
                    }
                var dateparam;
                dateparam=startyear "-" startmonth "-" d.getDate() "amp;e=" d.getFullYear() "-" endmonth "-" d.getDate();
                var chartsource;
                chartsource="<img src="http://xxxxxx.com/chartsymbol_chart.php?s=" dateparam "amp;m=lineamp;dateby=1amp;bollinger=1amp;bollinger_day=20amp;sma=1amp;sma_day=20amp;chartsize=1amp;id=" ticker """;
                source=chartsource " align="top" name="HSX" height="250" width="490">";
                document.write(source);
}
            </script>
</head>

<body>
  

Когда я вызываю функцию, она работает отлично.

 <table width="980" border="0" cellspacing="0" cellpadding="0">
    <tr>
        <td>
            <script type="text/javascript"> 
                source("^vnindex");
            </script>
        </td>
        <td>
            <script type="text/javascript"> 
                source("^hastc");
            </script>
        </td>
  </tr>
</table>
  

но только в первый раз, т. е. отображается диаграмма ^ vnindex, а ^ hastc — нет. Сначала я подумал, что это потому, что нет запаса ^hastc. Но когда я проверяю с помощью простого html-тега img, ^ hastc действительно появился. А для оставшейся части документа диаграмма вообще не отображается. Это означает, что функция работает только один раз.

Я понятия не имею, как это исправить, и был бы очень признателен, если вы сможете помочь мне с этим.

Спасибо Тоану Нгуену

Комментарии:

1. Действительно, стоит немного изучить циклы.

Ответ №1:

Имейте в виду, что document.write добавляется к документу, только если документ загружается, в противном случае он попытается перезаписать содержимое страницы тем, что вы укажете! Попробуйте вместо этого DOM-подход: document.appendChild( createElement(«img»))….

Комментарии:

1. Спасибо. Но я все еще не могу заставить ее работать. Цикл просто создает изображения повторно в одном месте, в то время как я хочу, чтобы они отображались в разных местах в одном html-документе. document.appendChild(createElement(«img»)) для меня слишком сложен. Я всего лишь новичок. Кто-нибудь может быть немного конкретнее? Спасибо