Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 03.03.2009, 03:54
Аспирант
Отправить личное сообщение для grusha Посмотреть профиль Найти все сообщения от grusha
 
Регистрация: 01.03.2009
Сообщений: 55

Сообщение от x-yuri Посмотреть сообщение
да, но что по-твоему в myString или что ты думаешь там находится?
когда придумаешь, зачем тебе лимит - тогда можешь использовать
Я так представлял себе ...
Первый код преобразует эту строку
vote(2,23,1,'2750ee0fc11',-10)
в
vote,2,23,1,'2750ee0fc11',-10

А второй код делает из этой строки массив , разделяю переменные по запятой......

Сейчас попробовал такой код

jQuery('#my_link a').click(function(event) {
        var href_link = jQuery(this).attr('href');
        var title_link = jQuery(this).attr('title');
        var link_this = this;
        var re = /^(\w+)\(([^)]*)\)$/;
        var found = href_link.match(re);
                 alert(found);
       var myString = ""+found+"";
	var splits = myString.split(",");
	alert(splits[5]);
        return false;
  });


Впринципе выдаёт то что мне надо , только начиная с 5...
5 возврашает vote
6 возврашает 2
7 возврашает 23
8 возврашает 1
9 возврашает 2750ee0fc11

и т.д.

Последний раз редактировалось grusha, 03.03.2009 в 03:59.
Ответить с цитированием
  #22 (permalink)  
Старый 03.03.2009, 12:17
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
Первый код преобразует эту строку
vote(2,23,1,'2750ee0fc11',-10)
в
vote,2,23,1,'2750ee0fc11',-10
должен преобразовывать в массив из 3х элементов (см. выше). Воспользуйся Firefox + Firebug - он выдает более точную информацию о переменных. Или отладчиком IE

как у тебя получилось начиная с 5го элемента - не понял O_o
Ответить с цитированием
  #23 (permalink)  
Старый 03.03.2009, 15:10
Аспирант
Отправить личное сообщение для grusha Посмотреть профиль Найти все сообщения от grusha
 
Регистрация: 01.03.2009
Сообщений: 55

Сообщение от x-yuri Посмотреть сообщение
должен преобразовывать в массив из 3х элементов (см. выше). Воспользуйся Firefox + Firebug - он выдает более точную информацию о переменных. Или отладчиком IE

как у тебя получилось начиная с 5го элемента - не понял O_o
Firefox + Firebug давно пользуюсь , но где посмотреть этот массив не понимаю..... Вкладка DOM ?
Если я вызываю алерт :

alert(splits[0]) возврашает vote(2
alert(splits[1]) возврашает 23
alert(splits[2]) возврашает 1
alert(splits[3]) возврашает 2750ee0fc11
alert(splits[4]) возврашает -10)

С пятого всё нормально идёт...
Ответить с цитированием
  #24 (permalink)  
Старый 03.03.2009, 15:26
Аспирант
Отправить личное сообщение для grusha Посмотреть профиль Найти все сообщения от grusha
 
Регистрация: 01.03.2009
Сообщений: 55

и всё таки даже если использовать этот код начиная с 5....
то всё равно не проходит так как один из элементов остаётся в одинарных кавычках '2750ee0fc11', получается теперь еще кавычки надо убрать !
Это просто писец
Ответить с цитированием
  #25 (permalink)  
Старый 03.03.2009, 17:21
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
Firefox + Firebug давно пользуюсь , но где посмотреть этот массив не понимаю
на вкладке Console можно вычислять выражения. Например, чтобы узнать, что ты получишь в результате match, напиши в ней
"vote(2,23,1,'2750ee0fc11',-10)".match(/^(\w+)\(([^)]*)\)$/)

Еще вместо alert можно в скрипте писать
console.log( "vote(2,23,1,'2750ee0fc11',-10)".match(/^(\w+)\(([^)]*)\)$/) )

и опять же результат попадет во вкладку Console

Цитата:
С пятого всё нормально идёт...
теперь все понятно. А зачем ты регулярное выражение использовал? я думал, чтобы получить название функции (vote/unvote) и ее аргументы (2,23,1,'2750ee0fc11',-10), а вот уже аргументы разбивать по запятой

Цитата:
получается теперь еще кавычки надо убрать
так это же строка. Но если надо убрать и ты уверен, что они всегда будут, выбирай:
str.substring(1, str.length-1)
str.replace("'",'')
str.replace("'",'').replace('"','')
str.replace(/^('|")/, '').replace(/('|")$/, '')
Ответить с цитированием
  #26 (permalink)  
Старый 03.03.2009, 17:53
Аспирант
Отправить личное сообщение для grusha Посмотреть профиль Найти все сообщения от grusha
 
Регистрация: 01.03.2009
Сообщений: 55

Огромное спасибо. Теперь работает.
Код такой:
jQuery('#my_link a').click(function(event) {
        var href_link = jQuery(this).attr('href');
        var title_link = jQuery(this).attr('title');
        var link_this = this;
        var re = /^(\w+)\(([^)]*)\)$/;
	var found = href_link.match(re);
	var myString = ""+found+"";
	var splits = myString.split(",");
	var splits9 = splits[9].replace(/^('|")/, '').replace(/('|")$/, '');
	vote(splits[6], splits[7], splits[8], splits9, splits[10], link_this,title_link);
		
		return false;
  });


Длинноват как то конечно
Ответить с цитированием
  #27 (permalink)  
Старый 03.03.2009, 18:14
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

var myString = ""+found+"";
    var splits = myString.split(",");
    var splits9 = splits[9].replace(/^('|")/, '').replace(/('|")$/, '');

а почему бы не сделать так:
var els = found[2].split(',');
var el3 = els[3].replace(/('|")/g)

replace(/('|")/g) - думаю можно и так, кавычки ведь скорее всего только ограничивать строку будут? В середине вряд ли будут присутствовать?

this не обязательно в link_this копировать
Ответить с цитированием
  #28 (permalink)  
Старый 03.03.2009, 18:44
Аспирант
Отправить личное сообщение для grusha Посмотреть профиль Найти все сообщения от grusha
 
Регистрация: 01.03.2009
Сообщений: 55

Сообщение от x-yuri Посмотреть сообщение
а почему бы не сделать так:
[js]var els = found[2].split(',');
var el3 = els[3].replace(/('|")/g)

replace(/('|")/g) - думаю можно и так, кавычки ведь скорее всего только ограничивать строку будут? В середине вряд ли будут присутствовать?
Если использовать этот код

var el3 = els[3].replace(/('|")/g)

То опять возникает ошибка
undefined2750ee0fc11undefined
Почему то вместо кавычек вставляется текст undefined

Сообщение от x-yuri Посмотреть сообщение
this не обязательно в link_this копировать
Всмысле просто передать в функцию this а не link_this
?
Ответить с цитированием
  #29 (permalink)  
Старый 03.03.2009, 18:48
Аспирант
Отправить личное сообщение для grusha Посмотреть профиль Найти все сообщения от grusha
 
Регистрация: 01.03.2009
Сообщений: 55

А ок понял , если написать так
var el3 = els[3].replace(/('|")/g,'')

Тогда всё ок.
Привожу код полностью , может комуто потом пригодится
jQuery('#my_link a').click(function(event) {
        var href_link = jQuery(this).attr('href');
        var title_link = jQuery(this).attr('title');
        var link_this = this;
        var re = /^(\w+)\(([^)]*)\)$/;
		var found = href_link.match(re);
		var splits = found[2].split(',');
		var el9 = splits[3].replace(/('|")/g,'');
		vote(splits[0], splits[1], splits[2], el9, splits[4], link_this,title_link);
 
        return false;
  });
Ответить с цитированием
  #30 (permalink)  
Старый 03.03.2009, 19:00
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
Всмысле просто передать в функцию this а не link_this
именно

p.s. found[1] будет содержать название функции (ты еще unvote хотел)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения для превью форума Бобр Общие вопросы Javascript 9 06.11.2008 09:12
Регулярные выражения вытаскивание по шаблону baal1988 Общие вопросы Javascript 27 09.10.2008 10:51
Регулярные выражения задача посложнее faunder Общие вопросы Javascript 5 15.09.2008 14:17
Регулярные выражения faunder Общие вопросы Javascript 2 15.09.2008 09:49
регулярные выражения в JS bifidokk Events/DOM/Window 2 02.06.2008 12:29