Показано с 1 по 8 из 8

Тема: Опера поняла этот код а IE - нет...

  1. #1

    Регистрация
    05.12.2005
    Адрес
    Москва
    Сообщений
    5

    Через DOM добавляю элементы, присваиваю новые имена, эксплорер не хочет находить по этим именам новые элементы, в Опере тот же код обрабатывается как задумывалось...

    Не работает функция calc()



    вот код:
    Код:
    <html>
    <head>
    <title> New Document </title>
    <meta name="Generator" content="EditPlus">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <style>
    .flatList {border: 0; font-family: "Courier New", Courier, monospace; font-weight: bold; background-color:#FFD900; padding:0; margin:0; text-align:center}
    </style>
    
    
    <script>
    
     *function test(){
     * *var tbl = document.getElementById(&#39;orderList&#39;);
     * *var tbody=tbl.getElementsByTagName(&#39;TBODY&#39;)[0];
     * *var totalRows = tbody.getElementsByTagName(&#39;TR&#39;).length;
     * *var tr=tbody.getElementsByTagName(&#39;TR&#39;)[0]
     * *var x=tr.cloneNode(true);
     * *var inps = x.getElementsByTagName(&#39;INPUT&#39;);
     * *for (var i =0; *i < inps.length; i++) {
     * * *inps[i].className=&#39;new&#39;;
     * * *inps[i].disabled=false;
     * if (inps[i].value == &#39;Кол-во&#39;) inps[i].value=&#39;1&#39;;
     * if (inps[i].value == &#39;Цена&#39;) inps[i].value=&#39;123&#39;;
     * if (inps[i].value == &#39;Скидка&#39;) inps[i].value=&#39;0&#39;;
     * * *inps[i].name=inps[i].name+totalRows;
     * *} 
     * *tbody.appendChild(x);
     *}
     *
    
    function calc() {
    
    ****var total = 0;
    ****var tbl = document.getElementById(&#39;orderList&#39;);
    ****var tbody=tbl.getElementsByTagName(&#39;TBODY&#39;)[0];
    ****var totalRows = tbody.getElementsByTagName(&#39;TR&#39;).length;
    ****for (var i = 1; *i < totalRows; i++) {
     *summ = eval("document.all.Sale_Kolvo_"+i+".value*document.all.Sale_Sale_"+i+".value");
     *eval("document.all.Sale_Total_"+i+".value=summ");
     *proc = eval("1/100*(100-document.all.Sale_Discount_"+i+".value)");
     *eval("document.all.Sale_Total_"+i+".value=summ*proc");
    
     *total = total+Number(eval("document.all.Sale_Total_"+i+".value"));
    ****}
    ****document.all.total.value = total;
    
    }
    
    
    </script>
    </head>
    
    <body onClick="calc();">
    <a onclick="test()">Добавляем строку</a>
    <form name=order method=get action="ins.php" enctype="multipart/form-data">
     *<table border=1 cellspacing=0 cellpadding=0 bordercolor=lightblue style="border: none" Id=orderList>
     *<tr>
     * *<td><INPUT TYPE="text" NAME="" class=flatList Value="№" size="2" Disabled></td>
     *****<td><INPUT TYPE="text" NAME="Sale_Id_" class=flatList Value="арт." size="4" Disabled onclick="alert(this.name)"></td>
     *****<td><INPUT TYPE="text" NAME="Sale_Title_" class=flatList Value="Наименование" size="25" Disabled onclick="alert(this.name)"></td>
     *****<td><INPUT TYPE="text" NAME="Sale_Kolvo_" class=flatList Value="Кол-во" size="6" Disabled onclick="alert(this.name)"></td>
     *****<td><INPUT TYPE="text" NAME="Sale_Reserv_" class=flatList Value="Резерв" size="6" Disabled onClick="alert(this.name)"></td>
     *****<td><INPUT TYPE="text" NAME="Sale_Bye_" class=flatList Value="Зак." size="8" Disabled onClick="alert(this.name)"></td>
     *****<td><INPUT TYPE="text" NAME="Sale_Sale_" class=flatList Value="Цена" size="8" Disabled></td>
     *****<td><INPUT TYPE="text" NAME="Sale_Discount_" class=flatList Value="Скидка" size="8" Disabled></td>
     *****<td><INPUT TYPE="text" NAME="Sale_Total_" class=flatList Value="Сумма" size="8" Disabled></td>
     *****<td style="border: none" bgcolor="FFFFFF"><INPUT TYPE="button" Value=del Disabled style="color:red" onClick="" Class=flat></td>
     *</tr>
     *</table>
     *<p align=right>Общая стоимость заказа <input type="text" name="total" value=0 style="border: 0; color:red; font-weight: bold; text-align:center; width: 60"> USD</p>
    
    </form>
    
    </body>
    </html>

  2. #2

    Регистрация
    05.12.2005
    Адрес
    Москва
    Сообщений
    5
    Вот так проверял
    Код:
    var ins = document.getElementsByTagName(&#39;INPUT&#39;);
    var allins = "";
    for (i = 0; i < ins.length; i++)
    {
    ****allins += "\n" + ins[i].name + "=" + ins[i].value;
    }
    alert(allins);
    Все элементы есть, при сабмите формы в кмандной строке все элементы появляются. А через documents.all.ИмяФирмы - никак.

  3. #3

    Регистрация
    30.06.2004
    Адрес
    Ангарск
    Сообщений
    245
    Честно говоря меня это задача давно вводила в псих. Вроде элементы есть, а вроде их нет. В итоге что я могу посоветовать.

    Код:
    function calc() {
    var total = 0;
    var tbl = document.getElementById(&#39;orderList&#39;);
    var tbody=tbl.getElementsByTagName(&#39;TBODY&#39;)[0];
    var totalRows = tbody.getElementsByTagName(&#39;TR&#39;).length;
    var rst=document.order.elements.length
    var i_str=1;
    var sk_i=0;
    var ss_i=0;
    var st_i=0;
    var sd_i=0;
    var system=false;
    for (var i = 1; *i < rst; i++) {
    var sk=&#39;Sale_Kolvo_&#39;+i_str;
    var ss=&#39;Sale_Sale_&#39;+i_str;
    var st=&#39;Sale_Total_&#39;+i_str;
    var sd=&#39;Sale_Discount_&#39;+i_str;
    var t=document.order.elements[i].name;
    switch (t){
    case sk:
    var sk_i=i;
    var sk_value=document.order.elements[i].value;
    break;
    case ss:
    var ss_i=i;
    var ss_value=document.order.elements[i].value;
    break;
    case st:
    var st_i=i;
    var st_value=document.order.elements[i].value;
    break;
    case sd:
    var sd_i=i;
    var sd_value=document.order.elements[i].value;
    system=true;
    i_str++;
    break;
    }
     if (system){
     var summ=sk_value*ss_value;
     document.order.elements[st_i].value=summ;
     var proc=1/100*(100-sd_value);
     document.order.elements[st_i].value=summ*proc;
     total=total+Number(document.order.elements[st_i].value);
     system=false;
     }
    }
    document.all.total.value = total;
    }
    Проверял и в Opera и в FF и в IE ... везде работает. Громоздко, но может быть поможет ...

  4. #4

    Регистрация
    05.12.2005
    Адрес
    Москва
    Сообщений
    5
    у меня rst получется длиннее чем нужно, это тольк кусок всего кода. Но попробую из диапазона табле взять...

    спасибо, попробую

  5. #5

    Регистрация
    30.06.2004
    Адрес
    Ангарск
    Сообщений
    245
    Попробуй, я эту функцию в твою станицу вставил ... и все работало ...

  6. #6

    Регистрация
    05.12.2005
    Адрес
    Москва
    Сообщений
    5
    В общем по номеру элемента наверно буду обращаться. Вот примерно так:
    Код:
    function calc() {
    
    lnh = document.order.elements.length;
    var totalAll = 0;
    for (i = 0; i < lnh; i++)
    {
    ****namEl = document.order.elements[i].name;
    ****if (namEl != &#39;Sale_Kolvo_&#39;)
    ****{
     *numEl = namEl.substr(11,20);
     *namEl = namEl.substr(0,11);
     *if (namEl == &#39;Sale_Kolvo_&#39;)
     *{
     *****alert(numEl);
     *****kolvo = document.order.elements[i].value;
     *****sale = document.order.elements[i+3].value;
     *****discount = document.order.elements[i+4].value;
     *****proc=1/100*(100-discount);
     *****total = kolvo*sale*proc
     *****document.order.elements[i+5].value = total;
     *****totalAll = totalAll + total;
     *****alert(totalAll);
     *}
    ****}
    }
    document.all.total.value = totalAll;
    }
    Так вроде покороче получается. Ну и опять же автоматом проверяется имя формы, и от нее считается.

  7. #7

    Регистрация
    30.06.2004
    Адрес
    Ангарск
    Сообщений
    245
    Так тоже можно, а если скажем изменится положение элементов ? Но как ни странно, по номеру работает, а по имени ... фиг.

  8. #8

    Регистрация
    05.12.2005
    Адрес
    Москва
    Сообщений
    5
    Замена одного символа. Опятьже считать нужно сумму в одной строке таблицы, а общий результат вводится в статичное поле

Похожие темы

  1. Как вам этот логотип
    от mycomp в разделе Фирменный стиль
    Ответов: 0
    Последнее сообщение: 13.10.2012, 15:00
  2. Что означает этот скрипт??
    от Lucky_best в разделе Веб-программирование
    Ответов: 2
    Последнее сообщение: 16.04.2007, 15:55
  3. как сделан этот эффект?
    от lenmikh в разделе Растровая графика
    Ответов: 6
    Последнее сообщение: 18.01.2007, 03:07
  4. Как сверстать этот момент слоями?
    от BNF в разделе Вёрстка сайта
    Ответов: 13
    Последнее сообщение: 01.10.2005, 22:23
  5. как этот скрипт сделан?
    от phantom в разделе Веб-программирование
    Ответов: 7
    Последнее сообщение: 05.10.2004, 00:05

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •