03.03.2009, 03:54
|
Аспирант
|
|
Регистрация: 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.
|
|
03.03.2009, 12:17
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Цитата:
|
Первый код преобразует эту строку
vote(2,23,1,'2750ee0fc11',-10)
в
vote,2,23,1,'2750ee0fc11',-10
|
должен преобразовывать в массив из 3х элементов (см. выше). Воспользуйся Firefox + Firebug - он выдает более точную информацию о переменных. Или отладчиком IE
как у тебя получилось начиная с 5го элемента - не понял O_o
|
|
03.03.2009, 15:10
|
Аспирант
|
|
Регистрация: 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)
С пятого всё нормально идёт...
|
|
03.03.2009, 15:26
|
Аспирант
|
|
Регистрация: 01.03.2009
Сообщений: 55
|
|
и всё таки даже если использовать этот код начиная с 5....
то всё равно не проходит так как один из элементов остаётся в одинарных кавычках '2750ee0fc11', получается теперь еще кавычки надо убрать !
Это просто писец
|
|
03.03.2009, 17:21
|
|
|
|
Регистрация: 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(/('|")$/, '')
|
|
03.03.2009, 17:53
|
Аспирант
|
|
Регистрация: 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;
});
Длинноват как то конечно
|
|
03.03.2009, 18:14
|
|
|
|
Регистрация: 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 копировать
|
|
03.03.2009, 18:44
|
Аспирант
|
|
Регистрация: 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
?
|
|
03.03.2009, 18:48
|
Аспирант
|
|
Регистрация: 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;
});
|
|
03.03.2009, 19:00
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Цитата:
|
Всмысле просто передать в функцию this а не link_this
|
именно
p.s. found[1] будет содержать название функции (ты еще unvote хотел)
|
|
|
|