Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   Не работает строка после while (https://javascript.ru/forum/css-html-browser/43504-ne-rabotaet-stroka-posle-while.html)

buhalo88 08.12.2013 12:16

Не работает строка после while
 
Вообщем не знаю в чем дело, почему не доходит выполнение. В яваскрипте пока новичок.

function opa() {
    var cnt=0;
    var ww=0;
    var jj=0;
        while (document.getElementById('vid').options[cnt].value) {
            if (document.getElementById('vid').options[cnt].selected==true) {
              jj=Number(document.getElementById('vid').options[cnt].value);
              alert(jj);
            };
        cnt++;
        };
        alert(ww);
}

Все, что после 11 строки - не работает!

Demath 08.12.2013 15:03

Цитата:

Сообщение от buhalo88
Вообщем не знаю в чем дело, почему не доходит выполнение

Какое выполнение?
Напишите код полностью, тогда возможно будет оказать Вам помощь.

buhalo88 08.12.2013 15:29

Demath, вод код целиком
Код:

<?php
header("Content-type: text/html; charset=utf-8");
session_start();
include ($_SERVER["DOCUMENT_ROOT"]."/line.php");
include ($_SERVER["DOCUMENT_ROOT"]."/prov.php");
    if (prov()==1)
    {
    include ($_SERVER["DOCUMENT_ROOT"]."/auth.php");
    $login=$_SESSION['login'];
    $result = mysql_query("SELECT * FROM users WHERE login='$login'",$db);
    $myrow = mysql_fetch_array($result);
        if ($myrow['gruppa']==admin) {
?>
<script>

function change(idName) {
    if(document.getElementById(idName).style.display=='none') {
    document.getElementById(idName).style.display = '';
    } else {
    document.getElementById(idName).style.display = 'none';
    }
}


function summa(all) {
    var ish=Number(document.getElementById('summa').innerHTML);
    var summ=ish+all;
    document.getElementById('summa').innerHTML=summ;
}

function opa()
{
    var cnt=0;
    var ww=0;

          while (document.getElementById('vid').options[cnt].value)
          {
              if (document.getElementById('vid').options[cnt].selected==true) {
              ww=ww+Number(document.getElementById('vid').options[cnt].value);
              alert(document.getElementById('vid').options[cnt].value);
              }
          cnt++

          }
    alert(ww);
 
     
}


</script>
<style>
  td {
    padding: 5px; /* Поля вокруг текста */
  }
  </style>
<form method="get" action="/admin/add_zakaz.php">
<table>
<tr>
        <td>Название</td> <td><input type="text" name="name" /></td>
</tr>
<tr>
        <td valign="top">Вид</td> <td>
    <select multiple size="15" id="vid">
    <?php
        $sql = "SELECT name,tsena FROM tarif";
    $result = mysql_query($sql,$db)  or die(mysql_error()); 
        while ($row = mysql_fetch_assoc($result))
        {
            echo '<option value="'.$row['tsena'].'" onclick="opa()">'.$row['name'].'</option>';
        } 
?>
    </select>
</td>
</tr>
<tr valign="top">
        <td>Описание</td> <td><textarea cols="40px"  rows="10px" type="text" name="opis" /></textarea></td>
</tr>
<table>
<tr>
    <td >Копия на электр. носитель <input onchange="if (this.checked){summa(50) } else {summa(-50)};" id="copy" name="flash" type="checkbox" /></td>
   
        <td  >Срочный заказ <input onclick="change('test');" name="extra" type="checkbox" /></td>

    <td style="display:none" id="test">
    Срок выполения <input name="srok" type="date" />
    </td>
</tr>
</table>
<tr>
        <div id="summa"></div>
        <td><input type="submit" /></td>
</tr>
</table>
</form>
        <?php
        } else {
echo 'Только для администраторов!';
        }
    echo "<br><a  href='/admin.php'>назад</a><br>";
    } else {
    echo "Только для зарегестрированных<br><a  href='/'>Главная</a><br>";
    };
?>


BETEPAH 08.12.2013 23:55

12я строка должна выводить 0? Или есть какой-то не очевидный смысл в ней?

BETEPAH 09.12.2013 00:16

У вас ошибка вот здесь:
while (document.getElementById('vid').options[cnt].value) {

скрипт здесь вылетает когда после последнего элемента списка он пытается взять value у следующего элемента.
<select id="vid" onchange="opa()">
	<option value="1">один</option>
	<option value="2">два</option>
	<option value="3">три</option>
</select>
<script>
function opa() {
	var cnt = 0, ww = 0, jj = 0, sel = document.getElementById('vid');
	while (sel.options[cnt]) {
		if (sel.options[cnt].selected == true) {
			jj = Number(sel.options[cnt].value);
			alert(jj);
		};
		cnt++;
	};
	alert(ww);
}
</script>


Часовой пояс GMT +3, время: 16:54.