powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Можно ли упростить JS код ?
25 сообщений из 44, страница 1 из 2
Можно ли упростить JS код ?
    #37965152
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется таблица след. содержания:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<table>
.......
<tr>
     <td><strong>5 шт.</strong></td>
     <td class="tovar">Наименование товара</td>
     <td class="tovar">Завод изготовитель</td>
     <td><a href="#" class="update_tovar" id='tov-12345'>Изменить</a></td>
</tr>
.......
</table>


При нажатии на ссылку "Изменить" мне нужно получить "Наименование товара" и "Завод изготовитель".
Делаю это так:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
$('.update_tovar').live('click', function(e){

    tovar = $(this).parent().parent().find('.tovar').eq(0).text();
    zavod = $(this).parent().parent().find('.tovar').eq(1).text();

    alert(tovar +' \n'+ zavod);
        
});



Можно ли упростить присвоение переменным tovar и zavod ?
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965179
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
$tds = $(this).parent().parent().find('.tovar');
tovar = $tds.eq(0).text();
zavod = $tds.eq(1).text();

tdz = this.parentNode.previousSibling;
tdt = tdz.previousSibling;
tovar = tdt.innerHTML;
zavod = tdz.innerHTML;
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965238
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переменной tovar присваивается "Завод изготовитель"
переменной zavod - undefined
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965284
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все время забываю про текстовые сиблинги с переносами и пробелами.
Код: javascript
1.
2.
tdz = this.parentNode.previousSibling.previousSibling;
tdt = tdz.previousSibling.previousSibling;
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965300
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
Код: javascript
1.
.parent().parent()

http://api.jquery.com/closest/
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965311
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не того человека процитировал, сорри
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965314
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<html>
<body>
<table>
<tr>
     <td><strong>5 шт.</strong></td>
     <td class="tovar">Наименование товара</td>
     <td class="tovar">Завод изготовитель</td>
     <td><a href="javascript:void(0);" onclick="alert(this.parentNode.parentNode.cells[1].innerHTML+'\n'+this.parentNode.parentNode.cells[2].innerHTML);" class="update_tovar" id='tov-12345'>Изменить</a></td>
</tr>
</table>
</body>
</html>
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965320
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyВсе время забываю про текстовые сиблинги с переносами и пробелами.
Код: javascript
1.
2.
tdz = this.parentNode.previousSibling.previousSibling;
tdt = tdz.previousSibling.previousSibling;



Да, работает. Но в итоге получаем :

Код: javascript
1.
2.
    tovar = this.parentNode.previousSibling.previousSibling.previousSibling.previousSibling.innerHTML;   
    zavod = this.parentNode.previousSibling.previousSibling.innerHTML;



вместо :
Код: javascript
1.
2.
    tovar = $(this).parent().parent().find('.tovar').eq(0).text();
    zavod = $(this).parent().parent().find('.tovar').eq(1).text();



Что-то не получается короче.
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965495
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мои 5 копеек...

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
$(document).ready(function(e){
	$('.update_tovar').live('click', function(e){
		tovar = $(this).parents('tr').find('.tovar').eq(0).text();
		zavod = $(this).parents('tr').find('.tovar').eq(1).text();
		alert(tovar +' \n'+ zavod);
	});
});
</script>
</head>
<body>
<table>
<tr>
     <td><strong>5 шт.</strong></td>
     <td class="tovar">Наименование товара</td>
     <td class="tovar">Завод изготовитель</td>
     <td><a href="#" class="update_tovar" id='tov-12345'>Изменить</a></td>
</tr>
</table>
</body>
</html>
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965498
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще нажим!

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<script type="text/javascript">
$(document).ready(function(e){
	$('.update_tovar').live('click', function(e){
		tovar = $('.tovar',$(this).parents('tr')).eq(0).text();
		zavod = $('.tovar',$(this).parents('tr')).eq(1).text();
		alert(tovar +' \n'+ zavod);
	});
});
</script>
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965504
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И если структура ячеек всегда такая...

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<script type="text/javascript">
$(document).ready(function(e){
	$('.update_tovar').live('click', function(e){
		tovar = $('td',$(this).parents('tr')).eq(1).text();
		zavod = $('td',$(this).parents('tr')).eq(2).text();
		alert(tovar +' \n'+ zavod);
	});
});
</script>
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965519
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кумир! Добей меня танцем!!! (с) КВН

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<script type="text/javascript">
$(document).ready(function(e){
	$('.update_tovar').live('click', function(e){
		zavod=$('td',$(this).parents('tr'));
		tovar = zavod.eq(1).text();
		zavod = zavod.eq(2).text();
		alert(tovar +' \n'+ zavod);
	});
});
</script>
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965527
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andMegaMAntonariyВсе время забываю про текстовые сиблинги с переносами и пробелами.
Код: javascript
1.
2.
tdz = this.parentNode.previousSibling.previousSibling;
tdt = tdz.previousSibling.previousSibling;



Да, работает. Но в итоге получаем :

Код: javascript
1.
2.
    tovar = this.parentNode.previousSibling.previousSibling.previousSibling.previousSibling.innerHTML;   
    zavod = this.parentNode.previousSibling.previousSibling.innerHTML;



вместо :
Код: javascript
1.
2.
    tovar = $(this).parent().parent().find('.tovar').eq(0).text();
    zavod = $(this).parent().parent().find('.tovar').eq(1).text();



Что-то не получается короче.А зачем плодить одни и те же действия? Копипастом код пишешь что ли?
this.parentNode.previousSibling.previousSibling или $(this).parent().parent().find('.tovar') повторенное несколько раз является говнокодом.
Привычка так писать откликнется тормозами в каком-нибудь цикле.
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965546
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<html>
<body>
<table>
<tr>
     <td><strong>5 шт.</strong></td>
     <td class="tovar">Наименование товара</td>
     <td class="tovar">Завод изготовитель</td>
     <td><a href="javascript:void(0);" onclick="alert(this.parentNode.parentNode.cells[1].innerHTML+'\n'+this.parentNode.parentNode.cells[2].innerHTML);" class="update_tovar" id='tov-12345'>Изменить</a></td>
</tr>
</table>
</body>
</html>


А чем моё не годится-то? Или я чё-то не понял?
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965593
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
window.onload = function() {
     var upd = document.getElementsByClassName('update_tovar'),
     i, max;
     for(i = 0, max = upd.length; i < max; i += 1) {
           upd[i].onclick = function() {
                  var inf = this.parentNode.parentNode.getElementsByClassName('tovar');
                  console.log(inf[0] + ' ' + inf[1]);
           };
     }
};


если покажется не очень кроссброузерно или ("повторенное несколько раз является говнокодом" (С) ;) можно самому реализовать методы
getElementsByClassName
+ поиск родительского нода по его имени - там несложно (банальная рекурсия)!!!
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965612
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так...можно самому реализовать методы
getElementsByClassName
Часы-то маленькие... А вот батарейки к ним в двух чемоданах! (с) из анекдота
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965616
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeА чем моё не годится-то?
Букав в нём много...
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965672
авторЧасы-то маленькие... А вот батарейки к ним в двух чемоданах! (с) из анекдота
ой! relax... jQuery чай поболе будет!
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965695
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaКумир! Добей меня танцем!!! (с) КВН

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<script type="text/javascript">
$(document).ready(function(e){
	$('.update_tovar').live('click', function(e){
		zavod=$('td',$(this).parents('tr'));
		tovar = zavod.eq(1).text();
		zavod = zavod.eq(2).text();
		alert(tovar +' \n'+ zavod);
	});
});
</script>


Спасибо! Такой вариант, как мне кажется, более понятен и удобочитаем.
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965732
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andMegaM,

В своём-ли Вы уме?
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965830
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeandMegaM,

В своём-ли Вы уме?
что нетак?
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965852
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andMegaMShSergeandMegaM,

В своём-ли Вы уме?
что нетак?
Возьмите мой код. Типа, скопировать в файл и запустить из-под любого браузера, не работает? Надо жКвери с говнокодом прикручивать?
Я ответил чисто по сабжу: " Можно ли упростить JS код ? ". Может, я его не совсем понял. А если верно понял, то спросил: "в своём-ли Вы уме".
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965891
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К проекту уже прикручен Jquery и писать чистый JS-код считаю не совсем правильным подходом.
Конечно, ради одной кнопки прикручивать Jquery не стал бы.

Почему след. код считается говнокодом?
Код: javascript
1.
2.
3.
4.
5.
6.
$('.update_tovar').live('click', function(e){
   zavod=$('td',$(this).parents('tr'));
   tovar = zavod.eq(1).text();
   zavod = zavod.eq(2).text();
   alert(tovar +' \n'+ zavod);
});
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965920
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andMegaM,

Букаф много.
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37965925
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andMegaMК проекту уже прикручен Jquery и писать чистый JS-код считаю не совсем правильным подходом...
Считайте себе, что хотите, только потом не задавайте вопросов, что в сабже: " Можно ли упростить JS код ?".
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Можно ли упростить JS код ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]