Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.10.2011, 11:20
Новичок на форуме
Отправить личное сообщение для Lehin Посмотреть профиль Найти все сообщения от Lehin
 
Регистрация: 20.10.2011
Сообщений: 5

getElementById() не возвращает ссылку на елемент
Доброго времени суток.
только начинаю разбираться с javascript и вот возникла проблема.
Есть страничка на сайте joomla в ней есть структура, которая состоит из вложенных табов и слайдеров. в каждом слайдере есть таблицы выводимые php скриптом
<?php
//переменные
$pricesArray = array("price1"=>1,"price2"=>1,"price3"=>1,"price4"=>1,"price5"=>1,"price6"=>1);
//cтили
echo '
<style type="text/css">
@import url("./myscrypts/local.css");
</style>
';
//Таблица
echo "<form name =\"ovs\" ><table class=\"price\" cellspacing=\"0\">";
//Названия групп колонок таблицы
echo "
<tr class=\"price\" >
<td class=\"price\" id=head>3</td>
<td class=\"price\" id=head colspan=\"3\">1</td>
</tr>
";
//Название колонок таблицы
echo "
<tr class=\"price\" >
<td class=\"price\" id=\"colname\" id=id=\"colname\"> 2</td>
<td class=\"price\" id=\"cost\" colspan=\"2\"></td>
<td class=\"price\" id=\"cost\">Количество(шт)</td>
</tr>
";
//1я строка таблицы
echo "
<tr class=\"price\" >
<td class=\"price\" id=\"colname\" id=id=\"colname\"> 1</td>
<td class=\"price\" id=\"cost\">".$pricesArray["price1"]."</td>
<td class=\"price\" id=\"cost\"><input id=\"btn1\" class=\"button\" type=\"button\" value=\"Добавить\" /><input id=\"btn7\" class=\"button\" type=\"button\" value=\"Убрать\"/></td>
<td class=\"price\" id=\"cost\"><input id=\"qty1\" type=\"text\" value=\"0\"/></td>
</tr>
";
// еще куча строк
echo'</table>
<input type="button" value="Посчитать" onclick="ovsFindSumm()" style="margin-top:10px;"/><input type="reset" value="Сбросить" onclick="ovsResetSumm()" style="margin-top:10px;"/>
<div id="finalCount" style="margin-left:5px;margin-top:6px;">Итого:</div>
</form>';?>

и собственно обрабатывается скриптом
<script language="javascript" type="text/javascript">
function ovsCheck(field)
{
var result = false;
var val;
if (field.value == ''){
alert('Как так, вы же ничего не ввели');
return result;

}
val = parseInt(field.value);
if (isNaN(val)){
alert('Не пытайтесь обмануть, это не число!');
return result;
}
if (val != field.value){
alert('Не пытайтесь обмануть, это не число!');
return false;
}
if (val < 0){
alert('Мы - за движение вперед! Введите положительное а не отрицательное число!');
return result;
}
result=true;
return result;
}

function ovsResetSumm()
{
document.ovs.getElementById('finalCount').innerHTML="Итого:";
}

function ovsFindSumm(){
var summ=0;
var prices = [<?php echo "{$pricesArray["price1"]},{$pricesArray["price2"]},{$pricesArray["price3"]},{$pricesArray["price4"]},{$pricesArray["price5"]},{$pricesArray["price6"]}";?>]

for( var i=0;i<6;i++)
{
var index=i+1;
var quant = document.ovs.getElementById('qty'+index);
summ+=prices[i]*Number(quant.value);
}
document.ovs.getElementById('finalCount').innerHTML="Итого: "+summ;
}
function ovsAddItem()
{
var index=0;
if(this.id=='btn1'){ index=1;}
if(this.id=='btn2'){ index=2;}
if(this.id=='btn3'){ index=3;}
if(this.id=='btn4'){ index=4;}
if(this.id=='btn5'){ index=5;}
if(this.id=='btn6'){ index=6;}
if(index>0&&index<7)
{
var quant = document.ovs.getElementById('qty'+index.toString());
var x=ovsCheck(quant);
if(x==true)
{
quant.value=Number(quant.value)+1;
}
}
}
function ovsDelItem()
{
var index=0;
if(this.id=='btn7'){ index=1;}
if(this.id=='btn8'){ index=2;}
if(this.id=='btn9'){ index=3;}
if(this.id=='btn10'){ index=4;}
if(this.id=='btn11'){ index=5;}
if(this.id=='btn12'){ index=6;}
if(index>0&&index<7)
{
var quant = document.ovs.getElementById('qty'+index.toString());
var x=ovsCheck(quant);
if(x==true&&Number(quant.value)>0)
{
quant.value=Number(quant.value)-1;
}
}
}

var buttonAdd1 = document.ovs.getElementById('btn1');
... еще пара подобных
var buttonDel1 = document.ovs.getElementById('btn7');
... еще пара подобных
buttonAdd1.onclick = ovsAddItem; 
buttonDel1.onclick = ovsDelItem;
... еще пара подобных
</script>

Проблема заключается в том что есть точно такая же таблица в другом табе и обрабатывается точно также отличается все это дело именем формы вместо ovs -> om и определения функций начинаются соответственно с om.
При попытке обратиться к элементам формы om путем
var ombuttonAdd1 = document.om.getElementById('btn1');
функция не работает хотя если обращаться через document.om.elements[id_для_btn1].id то элемент виден.
Не пойму в чем ошибка. Если возможно подскажите новичку

Последний раз редактировалось Lehin, 20.10.2011 в 11:42.
Ответить с цитированием
  #2 (permalink)  
Старый 20.10.2011, 17:32
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

document.getElementsByName('ovs')[0];
Ответить с цитированием
  #3 (permalink)  
Старый 21.10.2011, 08:37
Новичок на форуме
Отправить личное сообщение для Lehin Посмотреть профиль Найти все сообщения от Lehin
 
Регистрация: 20.10.2011
Сообщений: 5

Сообщение от monolithed Посмотреть сообщение
document.getElementsByName('ovs')[0];
Не совсем понял, что имелось в виду. Обращаться к форме через getElementsByName ? чем этот способ отличается от document.имя_формы ?
а то что то разум молчит, пойду у гугля спрошу
Ответить с цитированием
  #4 (permalink)  
Старый 21.10.2011, 09:04
Новичок на форуме
Отправить личное сообщение для Lehin Посмотреть профиль Найти все сообщения от Lehin
 
Регистрация: 20.10.2011
Сообщений: 5

при обращении к
<input id=\"btn1\" class=\"button\" type=\"button\" value=\"Добавить\" />

в форме c именем name="om" при помощи
document.om.getElementById('btn1') он же document.getElementsByName('om')[0].getElementById('btn1')

все равно выдает false;
при попытке вывести alert(document.om.getElementById('btn1').id); выдает undefined
Не ужели id кнопок должны быть уникальными для всего документа, а не только для области формы в которой они находятся?

Последний раз редактировалось Lehin, 21.10.2011 в 09:10.
Ответить с цитированием
  #5 (permalink)  
Старый 21.10.2011, 11:10
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Lehin
Не ужели id кнопок должны быть уникальными для всего документа, а не только для области формы в которой они находятся?
Именно так id уникально. А по поводу остального-вам нужно изучить основы,чтоб не писать чёртичто и удивляться почему это не работает.
Ответить с цитированием
  #6 (permalink)  
Старый 21.10.2011, 12:03
Новичок на форуме
Отправить личное сообщение для Lehin Посмотреть профиль Найти все сообщения от Lehin
 
Регистрация: 20.10.2011
Сообщений: 5

Сообщение от dmitriymar Посмотреть сообщение
Именно так id уникально. А по поводу остального-вам нужно изучить основы,чтоб не писать чёртичто и удивляться почему это не работает.
в javascript уникальность не состоит из "имя_form.имя_id"?
исходя из того что я уже успел прочесть то в формах с разными именами по идее могут быть одинаковые id -__- вы говорите обратное, я запутался.

Последний раз редактировалось Lehin, 21.10.2011 в 12:47.
Ответить с цитированием
  #7 (permalink)  
Старый 21.10.2011, 12:15
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

id вообще никакого отношения к формам не имеет. id уникален во всём документе, а для обращения по нему нужно использовать document.getElementById.
Сообщение от Lehin
java
Java в другом месте, тут JavaScript.
Ответить с цитированием
  #8 (permalink)  
Старый 21.10.2011, 12:21
Новичок на форуме
Отправить личное сообщение для Lehin Посмотреть профиль Найти все сообщения от Lehin
 
Регистрация: 20.10.2011
Сообщений: 5

Сообщение от B@rmaley.e><e Посмотреть сообщение
Java в другом месте, тут JavaScript.
опечатался
P.S. Спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обращение к объекту через ссылку boro-da jQuery 4 08.08.2011 15:48
Аякс не возвращает значение с сервера vamfirius Internet Explorer 0 26.05.2011 23:53
оператор return возвращает значение, а не ссылку. Vertuplatonium Общие вопросы Javascript 4 16.05.2011 14:02
Как работает оператор new когда функция-конструктор что-то возвращает ? olek Общие вопросы Javascript 2 06.03.2011 12:17
Получить ссылку на iframe PAMAC Javascript под браузер 2 23.02.2010 15:12