Javascript.RU

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

Нашёл такой способ , но это просто писец длинно !

jQuery('#my_link a').click(function(event) {
		var href_link = jQuery(this).attr('href');
		var link_test = substr(href_link, 5,-1);
		var link_test2 = explode( ',', link_test );
		alert(link_test2);
		return false;
  });

function explode( delimiter, string, limit ) {
 
    var emptyArray = { 0: '' };
    
    // third argument is not required
    if ( arguments.length < 2
        || typeof arguments[0] == 'undefined'
        || typeof arguments[1] == 'undefined' )
    {
        return null;
    }
 
    if ( delimiter === ''
        || delimiter === false
        || delimiter === null )
    {
        return false;
    }
 
    if ( typeof delimiter == 'function'
        || typeof delimiter == 'object'
        || typeof string == 'function'
        || typeof string == 'object' )
    {
        return emptyArray;
    }
 
    if ( delimiter === true ) {
        delimiter = '1';
    }
    
    if (!limit) {
        return string.toString().split(delimiter.toString());
    } else {
        // support for limit argument
        var splitted = string.toString().split(delimiter.toString());
        var partA = splitted.splice(0, limit - 1);
        var partB = splitted.join(delimiter.toString());
        partA.push(partB);
        return partA;
    }
}

function substr( f_string, f_start, f_length ) {
 
    f_string += '';
 
    if(f_start < 0) {
        f_start += f_string.length;
    }
 
    if(f_length == undefined) {
        f_length = f_string.length;
    } else if(f_length < 0){
        f_length += f_string.length;
    } else {
        f_length += f_start;
    }
 
    if(f_length < f_start) {
        f_length = f_start;
    }
 
    return f_string.substring(f_start, f_length);
}
Ответить с цитированием
  #12 (permalink)  
Старый 03.03.2009, 01:15
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

если ты уверен, что ни одна из параметров не приходит через параметры запроса (или не генерируется на основе параметров запроса), то можно просто добавить в строку нужные значения
s.replace(/\)/, value1+','+value2+')')

а потом eval

либо определить функцию и параметры можно с помощь такого регэкспа: /^(\w+)\(([^)]*)\)$/, а разбить строку параметров на составляющие можно с помощью split(',')

p.s. я бы скорее пользовался родными средствами javascript, чем портом php-функций
p.p.s. а ты думаешь, когда jQuery подключаешь, то там меньше кода?
Ответить с цитированием
  #13 (permalink)  
Старый 03.03.2009, 01:36
Аспирант
Отправить личное сообщение для grusha Посмотреть профиль Найти все сообщения от grusha
 
Регистрация: 01.03.2009
Сообщений: 55

Сообщение от x-yuri Посмотреть сообщение

либо определить функцию и параметры можно с помощь такого регэкспа: /^(\w+)\(([^)]*)\)$/, а разбить строку параметров на составляющие можно с помощью split(',')
А можно подробнее , просто я в JavaScript новичок.
Сообщение от x-yuri Посмотреть сообщение
p.p.s. а ты думаешь, когда jQuery подключаешь, то там меньше кода?
Если бы я был "гуру" в JavaScript ,я бы может и не использовал jQuery .
Но в моём случем получается , что я знаю JavaScript , а он меня нет ))
Ответить с цитированием
  #14 (permalink)  
Старый 03.03.2009, 01:57
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
А можно подробнее , просто я в JavaScript новичок
у строк есть метод match (принимает регулярное выражение в качестве параметра): str.match(/^regual expression$/)
что возвращает можно посмотреть, например, на вкладке Console Firebug'а
split - тоже метод строки, возвращает массив элементов после разбиения

подробное описание можно найти, например, здесь - http://javascript.ru/ecma/part15#a-15.5.4 (15.5.4.10, 15.5.4.14)
или здесь:
https://developer.mozilla.org/En/Cor...s/String/Split
https://developer.mozilla.org/en/Cor...s/String/match

Последний раз редактировалось x-yuri, 03.03.2009 в 02:00.
Ответить с цитированием
  #15 (permalink)  
Старый 03.03.2009, 02:22
Аспирант
Отправить личное сообщение для 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);
				 alert(found);
        return false;
  });


Алертом выводит
vote(2,23,1,'2750ee0fc11',-10),2,23,1,'2750ee0fc11',-10
Чтобы удалить не нужное мне теперь vote(2,23,1,'2750ee0fc11',-10),, надо еще что то использовать ?
Ответить с цитированием
  #16 (permalink)  
Старый 03.03.2009, 02:29
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

alert (а точнее преобразование в строку) предоставляет не очень подробную информацию. По идее это должен был быть массив из 3х элементов: ["vote(2,23,1,'2750ee0fc11',-10)","vote", "2,23,1,'2750ee0fc11',-10"]
Ответить с цитированием
  #17 (permalink)  
Старый 03.03.2009, 02:43
Аспирант
Отправить личное сообщение для grusha Посмотреть профиль Найти все сообщения от grusha
 
Регистрация: 01.03.2009
Сообщений: 55

Сообщение от x-yuri Посмотреть сообщение
alert (а точнее преобразование в строку) предоставляет не очень подробную информацию. По идее это должен был быть массив из 3х элементов: ["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(",", 30);
        alert(splits);
        return false;
  });


Второй алерт выдаёт точно тоже что и первый .
И еще , даже если всё ок то как мне обратиться ,скажем, ко второму элементу массива ?
Ответить с цитированием
  #18 (permalink)  
Старый 03.03.2009, 02:51
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

found - массив найденных вхождений. Элемент 0 - соответствие всему шаблону (^(\w+)\(([^)]*)\)$), 1 - первому подшаблону (\w+), 2 - второму ([^)]*)
Массив преобразуется в строку следующим образом: [1,2,3] -> '1,2,3'. Если написать в строке браузера 'javascript:[1,2,3]' то мы это увидим в действии. Это по поводу ""+found+""
Для чего ты используешь split(',') ? И зачем тебе, кстати, лимит (30) ?

Цитата:
И еще , даже если всё ок то как мне обратиться ,скажем, ко второму элементу массива ?
array[1]
Ответить с цитированием
  #19 (permalink)  
Старый 03.03.2009, 03:10
Аспирант
Отправить личное сообщение для grusha Посмотреть профиль Найти все сообщения от grusha
 
Регистрация: 01.03.2009
Сообщений: 55

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

Яж говорю я в JavaScript новичёк.
Ответить с цитированием
  #20 (permalink)  
Старый 03.03.2009, 03:15
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
Я так понял , что я по (,) запятой , делаю массив
да, но что по-твоему в myString или что ты думаешь там находится?
когда придумаешь, зачем тебе лимит - тогда можешь использовать
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения для превью форума Бобр Общие вопросы 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