Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   как получить фиксированный предопределенный аргумент функции JS (https://javascript.ru/forum/events/4961-kak-poluchit-fiksirovannyjj-predopredelennyjj-argument-funkcii-js.html)

kruvas 02.09.2009 17:11

как получить фиксированный предопределенный аргумент функции JS
 
стоит задача - получить параметр из вызова функции, но никак не могу придумать, как это сделать.
нужно для использования userjs в опере

на странице есть такая вот кнопка
<input type="button" value="Тынц" onclick="gettt('C772AC8B')">

function gettt(data)
{
    window.location.href='/'+hash+'/';
};

как попроще получить параметр этой функции, чтобы потом кнопку заменить на ссылку?
формы на странице нет. кроме этого инпута есть еще 2
единственное, что я нашел - перебором нахожу кнопку-инпут и получаю функцию. через алерт ее вижу, но поиск с помощью регекса не выходит почему то...
var f = document.getElementsByTagName('input');
    for(var i = 0; i < f.length; i++)
    {
      if(f[i].type && f[i].type=="button")
      {
	var ixs = f[i].onclick;
	alert (ixs);
	var patt1 = /gettt/m;
	var res = ixs.match(patt1);
	alert (res);
	break;
      }
    }

помогите пожалуйста. заранее спасибо за отклик.
Upd: исправил опечатку...
на строке вываливается ошибка:
Цитата:

Event thread: DOMContentLoaded
Error:
name: TypeError
message: Statement on line 48: Type mismatch (usually a non-object value used where an object is required)
Backtrace:
Line 48 of User JS script
var res = ixs.match(patt1);
At unknown location
т.е. надо именно по другому получать текст функции для извлечения параметра. как именно - пока не знаю.

Riim 02.09.2009 17:22

Откуда str взялся?

kruvas 02.09.2009 17:43

да, это я вырезал из примеров - видать намудрил. но факт остается фактом - не работает код даже при правильном написании.
т.е. при таком виде работает
var str = "The rain in Spain stays mainly in the plain"; 
var patt1 = /ain/g;
alert(str.match(patt1));

а у меня нет - несоответствие типов.
исправил вверху и добавил ошибку, на которой валится обработка..

есть еще варианты, как подступиться?

Riim 02.09.2009 18:28

Функция ixs не содержит метода match, зато есть метод toString .

magavnuk 02.09.2009 19:17

http://www.w3schools.com/jsref/jsref_match.asp

kruvas 02.09.2009 19:45

Riim, нижайше благодарю - все получилось. сам наверное не один час лопатил бы интернет...
в итоге получилось такое:
var f = document.getElementsByTagName('input');
    for(var i = 0; i < f.length; i++)
    {
      if(f[i].type && f[i].type=="button")
      {
         alert (f[i].onclick.toString().match(/gettt\(\"([\dabcdef]{32})\"\)/im)[1]);
         break;
      }
    }

по крайней мере у меня работает и устраивает.

ps - подсветка синтаксиса споткнулась на регексе :)


Часовой пояс GMT +3, время: 23:32.