Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.09.2010, 10:45
Аватар для Indiana
Аспирант
Отправить личное сообщение для Indiana Посмотреть профиль Найти все сообщения от Indiana
 
Регистрация: 20.12.2009
Сообщений: 61

Как правильно задать ID в создаваемом элементе ?
Здравствуйте, Господа!
На днях нарисовал вот такое чудовище:
<script>
    a=[];
    a[0]=100;
    a[1]=200;
    a[2]=300;
    a[3]=400;
    a[4]=500;
    a[5]=600;

    b=[];
    b[0]='самолет';
    b[1]='чайник';
    b[2]='утюг';
    b[3]='кефир';
    b[4]='стол';
    b[5]='арбалет';

    h=[];
    h[0]=h0;
    h[1]=h1;
    h[2]=h2;
    h[3]=h3;
    h[4]=h4;
    h[5]=h5;
 
function fr(i){
 
 var div=document.createElement('div');
  div.innerHTML='Вы выбрали '+b[i]+' ( '+a[i]+' руб. ) '
+'<input type="text" id="h[i]" value="1" onKeyUp="pr(i)"  size="5" 
 />'+' шт.';
    alert(h[i]);
     mid.appendChild (div);
}

</script>

да, можно смеяться!
при нажатии на кнопочку
<input  type="button" value="tratata" onclick="fr(4)">

вот здесь
<div name="mid" id="mid"></div>

появляется строка:
"Вы выбрали стол ( 500 руб. ) (здесь еще input) шт.".

Алерт в функции для того, чтобы узнать ID инпута, но он выдает undefined , т.е. я так понимаю ID так не задать.
можно прекратить смеяться.

Подскажите пжл. как правильно задать ID в создаваемом элементе , т.к.
кнопок много и не хочется для каждой рисовать отдельную функцию.
Заранее благодарен!
Ответить с цитированием
  #2 (permalink)  
Старый 09.09.2010, 10:51
Новичок
Отправить личное сообщение для inGray Посмотреть профиль Найти все сообщения от inGray
 
Регистрация: 03.08.2010
Сообщений: 230

<input id="4" type="button" value="tratata" onclick="fr()">

А в функции через this обращаться к id и далее по задаче...
__________________
Не хочешь, чтобы тебя послали? Не спрашивай куда идти.
Ответить с цитированием
  #3 (permalink)  
Старый 09.09.2010, 11:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

h[0]=h0; = > h[0]='h0';

id="h[i]" = > id="'+h[i]+'"

и того
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title></title>
</head>

<body>
<script>
    a=[];
    a[0]=100;
    a[1]=200;
    a[2]=300;
    a[3]=400;
    a[4]=500;
    a[5]=600;

    b=[];
    b[0]='самолет';
    b[1]='чайник';
    b[2]='утюг';
    b[3]='кефир';
    b[4]='стол';
    b[5]='арбалет';

    h=[];
    h[0]='h0';
    h[1]='h1';
    h[2]='h2';
    h[3]='h3';
    h[4]='h4';
    h[5]='h5';

function fr(i){

 var div=document.createElement('div');
  div.innerHTML='Вы выбрали '+b[i]+' ( '+a[i]+' руб. ) '
+'<input type="text" id="'+h[i]+'" value="1" onKeyUp="pr('+i+')"  size="5" onclick="alert(this.id)" />'+' шт.';
  document.getElementById('mid').appendChild (div);
}

</script>
<input  type="button" value="tratata" onclick="fr(4)">


<div name="mid" id="mid"></div>

</body>

</html>

Последний раз редактировалось рони, 09.09.2010 в 11:07.
Ответить с цитированием
  #4 (permalink)  
Старый 09.09.2010, 12:11
Аватар для Indiana
Аспирант
Отправить личное сообщение для Indiana Посмотреть профиль Найти все сообщения от Indiana
 
Регистрация: 20.12.2009
Сообщений: 61

Вау....ожидал:"Да ты тупой" или "Что ты делаешь в JS"....
Спасибо.....отпишу о результатах
Ответить с цитированием
  #5 (permalink)  
Старый 11.09.2010, 12:36
Аватар для Indiana
Аспирант
Отправить личное сообщение для Indiana Посмотреть профиль Найти все сообщения от Indiana
 
Регистрация: 20.12.2009
Сообщений: 61

можно я еще потуплю ?
function fr(i){
 var div=document.createElement('div');
  div.innerHTML='Вы выбрали '+b[i]+' ( '+a[i]+' руб. ) '
+'<input type="text" id="'+h[i]+'" value="1" onKeyUp="pr('+i+')"  size="5" onclick="alert(this.id)" />'+' шт.'+'  <span id="q1" >введите кол-во</span>';
  document.getElementById('mid').appendChild (div);
}

задали ID, затем
function pr(i){
var f=a[i];

var g=document.getElementById("'+h[i]+'").value;
var p=f*g;
document.getElementById('q1').innerHTML = p;
}

то происходит вот что:
document.getElementById("'+h[i]+'") is null

а если в input id="'+h[i]+'" поменять на id="homyakpoklonikvolta", ну или просто id="z" и g=document.getElementById("z").value; то скрипт работает, а это не совсем то (точнее совсем не то), что я хотел.
Толкните пжл. в нужную сторону, подскажите , что я не так сделал?
Ответить с цитированием
  #6 (permalink)  
Старый 11.09.2010, 13:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

function pr(i){
var f=a[i];
var g=document.getElementById(h[i]).value;
if(Number(g))document.getElementById('q1').innerHTML=f*Number(g);
}
Ответить с цитированием
  #7 (permalink)  
Старый 11.09.2010, 14:45
Аватар для Indiana
Аспирант
Отправить личное сообщение для Indiana Посмотреть профиль Найти все сообщения от Indiana
 
Регистрация: 20.12.2009
Сообщений: 61

Сообщение от рони Посмотреть сообщение
var g=document.getElementById(h[i]).value;

}
Рони, спасибо!
А я этот вар. тоже пробовал, но h[i] у меня в кавычках был.
Да, через НЕТ можно фотошоп изучить, а JS все же лучше хотя бы на курсах.
Еще раз спасибо.
Ответить с цитированием
  #8 (permalink)  
Старый 11.09.2010, 15:58
Аватар для Indiana
Аспирант
Отправить личное сообщение для Indiana Посмотреть профиль Найти все сообщения от Indiana
 
Регистрация: 20.12.2009
Сообщений: 61

Ну как-то так:
<html><head>
</head>
<body>


<script>
    a=[];
    a[0]=100;
    a[1]=200;
    a[2]=300;
    a[3]=400;
    a[4]=500;
    a[5]=600;
 
    b=[];
    b[0]='самолет';
    b[1]='чайник';
    b[2]='утюг';
    b[3]='кефир';
    b[4]='стол';
    b[5]='арбалет';
 
    h=[];
    h[0]='h0';
    h[1]='h1';
    h[2]='h2';
    h[3]='h3';
    h[4]='h4';
    h[5]='h5';

    g=[];
    g[0]='g0';
    g[1]='g1';
    g[2]='g2';
    g[3]='g3';
    g[4]='g4';
    g[5]='g5';

    p=[];
    p[0]='p0';
    p[1]='p1';
    p[2]='p2';
    p[3]='p3';
    p[4]='p4';
    p[5]='p5';
 

function fr(i){
 
 var div=document.createElement('div');
  div.innerHTML='<strong>'+b[i]+'</strong>'+'<br />'+'цена: '+a[i]+' руб. '
+'<input type="text" id="'+h[i]+'" value="0" onKeyUp="pr('+i+')"  size="5"  />'+' шт.'+'  <span id="'+p[i]+'" >введите кол-во</span>';
  document.getElementById('mid').appendChild (div);
  }
function pr(i){
var g=document.getElementById(h[i]).value;
var f=a[i];
if(Number(g))
document.getElementById(p[i]).innerHTML=f*Number(g);
}


function obsh(){

var tb= document.getElementById('mid');
var spanArray  = tb.getElementsByTagName('span');
var sum = 0;
for (j = 0; j < spanArray.length; j++) {
sum = sum + parseFloat(spanArray[j].innerHTML);}
document.getElementById('total').innerHTML = sum;  
}
</script>


<input  type="button" value="самолет" onclick="fr(0)"><br />
<input  type="button" value="чайник" onclick="fr(1)"><br />
<input  type="button" value="утюг" onclick="fr(2)"><br />
<input  type="button" value="кефир" onclick="fr(3)"><br />
<input  type="button" value="стол" onclick="fr(4)"><br />
<input  type="button" value="арбалет" onclick="fr(5)"><br />

 


<form name="mainform"  method="post" action="mail.php">

<div name="mid" id="mid"></div>


<input  type="button" value="итого:" onclick="obsh()">
<span id='total' name='total'></span>

</form>

</body>
</html>

корявенько, громоздко и даже возможно смешно, но немного CSS, HTML и фотошопа и интернет-магазин заработает (просто один малый за подобное попросил 10 килорублей)
Рони, огромное мерси за помощь!!!!
Ответить с цитированием
  #9 (permalink)  
Старый 12.09.2010, 04:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126


function obsh(){

var tb= document.getElementById('mid');
var spanArray  = tb.getElementsByTagName('span');
var sum = 0;
for (j = 0; j < spanArray.length; j++) {
if(parseFloat(spanArray[j].innerHTML))sum += parseFloat(spanArray[j].innerHTML);}
document.getElementById('total').innerHTML = sum;
}
Ответить с цитированием
  #10 (permalink)  
Старый 13.09.2010, 12:33
Аватар для Indiana
Аспирант
Отправить личное сообщение для Indiana Посмотреть профиль Найти все сообщения от Indiana
 
Регистрация: 20.12.2009
Сообщений: 61

не большая модернизация
function fr(i){
if (document.getElementById(h[i])) {
 
  alert('Этот товар уже в корзине');}
    else {
 
 var div=document.createElement('div');
  div.innerHTML='<strong>'+b[i]+'</strong>'+'<br />'+'цена: '+a[i]+' руб. '
+'<input type="text" id="'+h[i]+'" value="0" onKeyUp="pr('+i+')"  size="5"  />'+' шт.'+'  <span id="'+p[i]+'" >введите кол-во</span>';
  document.getElementById('mid').appendChild (div);
  }
  }
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как правильно оформить код frolvict Общие вопросы Javascript 4 30.04.2010 10:51
Как правильно прописать свой код в .js Всеми_Любимый Элементы интерфейса 6 23.02.2010 21:34
Ajax и три <form> не работает. Как правильно сделать листание записей из базы данных? vlad275 AJAX и COMET 2 14.12.2009 14:04
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20
Как правильно оформить Send() Алекс97 AJAX и COMET 20 30.10.2008 19:19