Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 13.03.2013, 01:14
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

фонарик,
Наверняка - onclick="alert(arraysFind(this.id))" -корректнее, поскольку пользователь нажав - еще раздумывает, а вот нажав отпустив - ожидает действия
Ответить с цитированием
  #22 (permalink)  
Старый 13.03.2013, 15:08
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Вот вы привели пример с alert, и представить себе не можете сколько часов я думал и пытался сделать так, чтобы alert работал непосредственно из функции arraysFind Но все-таки, не смотря на то, что смотреть на ваш скрипт изнутри было страшновато, проблему решил Оказалось, что там alert вне тела самой функции, потому и не работало Большое вам спасибо за подсказку.
Ответить с цитированием
  #23 (permalink)  
Старый 13.03.2013, 18:46
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Никак не могу понять, почему нельзя определить размер массива Приписываю к массиву .lenght, но не работает. Подскажите пожалуйста, как в вашем скрипте определить размер массива?
http://learn.javascript.ru/play/0mZIH
(строка 43)
Ответить с цитированием
  #24 (permalink)  
Старый 13.03.2013, 18:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

фонарик, массив Out , а arr - его элементы
alert(Out.length)
Ответить с цитированием
  #25 (permalink)  
Старый 13.03.2013, 19:06
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

рони, похоже на то Получается тогда что-то вроде:
alert(Out[0].length)
Спасибо за подсказку
Ответить с цитированием
  #26 (permalink)  
Старый 16.03.2013, 03:57
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Мистер Deff, а нельзя ли облачить каждый элемент во всех трех массивах в кавычки? Дело в том, что полученные массивы текстом вставляются в другой скрипт, и я с удивлением обнаружил что название элемента в массиве должно быть написано обязательно в кавычках Такое возможно в вашем скрипте, если обойтись без сильных изменений всего скрипта в целом?

<div id="Text" style="display:none; ">
[ "sarleon_recruit", "Sarleon Recruit", "Sarleon Recruits", tf_guarantee_boots|tf_guarantee_armor, 0, 0, fac_neutral,
    [ itm_ankle_boots, itm_leather_jacket, itm_linen_tunic, itm_leather_vest, itm_cudgel, itm_warhammer, itm_military_pick, itm_sickle, itm_dagger,],
    strength(5)|agility(5)|intellect(4)|charisma(4)|level(1), wp_one_handed(50)|wp_two_handed(50)|wp_polearm(50)|wp_archery(20)|wp_crossbow(20)|wp_throwing(20), knows_trade_2|knows_prisoner_management_1|knows_inventory_management_2|knows_shield_1|knows_weapon_master_1|knows_power_throw_1|knows_ironflesh_1,
    0x0000000000000001124000000020000000000000001c00800000000000000000, 0x00000000000062c76ddcdf7feefbffff00000000001efdbc0000000000000000, 0,
    52  ]
</div>

<div id="sarleon_recruit" onclick="arraysFind(this.id)" style="cursor:pointer;border:1px solid red; width:30px; height:30px; position:absolute; left: 40px; top: 20px; z-index:555; background-color:blue;"></div>    
    
<script>
function  arraysFind (BUM) {
var Out =[];
var str = document.getElementById('Text').innerHTML; //Это строка  - аналог получения нужной строки
var valid = str.indexOf(BUM);
if(valid==-1) return false;
str = str.substring(valid);//alert('>'+str)
var arr1=str.split(/\[|\]/img)[1].split(",");arr1.pop();

Out.push(arr1);//Массив в квадратных скобках за BUM;

var arr2=str.split(/0x000/img)[0].split(/(strength)/img);arr2.splice(0,1);
arr2 = arr2.join('').split(/knows_/)[0].split(/[,|]/img);arr2.pop();

Out.push(arr2); //Массив от strength до "knows_";

var arr3=str.split(/0x000/img)[0].split(/(knows_.*?)[|,]/img);arr3.splice(0,1);
arr3=arr3.join(',').split(/,+/img);arr3.pop();

Out.push(arr3); //Массив с "knows_";
  
alert(arr1)
alert(arr2)
alert(arr3)

	return Out;
}
    </script>
Ответить с цитированием
  #27 (permalink)  
Старый 16.03.2013, 05:42
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<div id="Text" style="display:none; ">
[ "sarleon_recruit", "Sarleon Recruit", "Sarleon Recruits", tf_guarantee_boots|tf_guarantee_armor, 0, 0, fac_neutral,
    [ itm_ankle_boots, itm_leather_jacket, itm_linen_tunic, itm_leather_vest, itm_cudgel, itm_warhammer, itm_military_pick, itm_sickle, itm_dagger,],
    strength(5)|agility(5)|intellect(4)|charisma(4)|level(1), wp_one_handed(50)|wp_two_handed(50)|wp_polearm(50)|wp_archery(20)|wp_crossbow(20)|wp_throwing(20), knows_trade_2|knows_prisoner_management_1|knows_inventory_management_2|knows_shield_1|knows_weapon_master_1|knows_power_throw_1|knows_ironflesh_1,
    0x0000000000000001124000000020000000000000001c00800000000000000000, 0x00000000000062c76ddcdf7feefbffff00000000001efdbc0000000000000000, 0,
    52  ]
</div>

<div id="sarleon_recruit" onclick="arraysFind(this.id)" style="cursor:pointer;border:1px solid red; width:30px; height:30px; position:absolute; left: 40px; top: 20px; z-index:555; background-color:blue;"></div>    
    
<script>
function  arraysFind (BUM) {
  function  replac (arr) {
   arr=arr.join(',').replace(/^\s*|\s*$/,'').split(/\s*?,\s*/g);
   arr=('"'+arr.join('","')+'"').split(/,/g);
    return arr
  }
var Out =[];
var str = document.getElementById('Text').innerHTML; //Это строка  - аналог получения нужной строки
var valid = str.indexOf(BUM);
if(valid==-1) return false;
str = str.substring(valid);//alert('>'+str)
var arr1=str.split(/\[|\]/img)[1].split(",");arr1.pop();
arr1 = replac(arr1);
Out.push(arr1);//Массив в квадратных скобках за BUM;

var arr2=str.split(/0x000/img)[0].split(/(strength)/img);arr2.splice(0,1);
arr2 = arr2.join('').split(/knows_/)[0].split(/[,|]/img);arr2.pop();
arr2 = replac(arr2);
Out.push(arr2); //Массив от strength до "knows_";

var arr3=str.split(/0x000/img)[0].split(/(knows_.*?)[|,]/img);arr3.splice(0,1);

arr3=arr3.join(',').split(/,+/img);arr3.pop();
arr3 = replac(arr3);

Out.push(arr3); //Массив с "knows_";
  
alert(arr1)
alert(arr2)
alert(arr3)

	return Out;
}
    </script>

Последний раз редактировалось Deff, 16.03.2013 в 16:50.
Ответить с цитированием
  #28 (permalink)  
Старый 16.03.2013, 14:19
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Большое вам спасибо

В переменных itm_ перед названием, т.е после кавычки стоит пробел
Код:
" itm_ankle_boots"," itm_leather_jacket"," itm_linen_tunic",
откуда образуется этот пробел я сам наверно так и не разгадаю Не поможете его убрать?

Последний раз редактировалось фонарик, 16.03.2013 в 14:32.
Ответить с цитированием
  #29 (permalink)  
Старый 16.03.2013, 16:52
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от фонарик
В переменных itm_ перед названием, т.е после кавычки стоит пробел
Поправил
В исходнике строки
[ itm_ankle_boots, itm_leather_jacket, itm_linen_tunic, itm_leather_vest, itm_cudgel, itm_warh
Ответить с цитированием
  #30 (permalink)  
Старый 16.03.2013, 17:54
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Проверил на своих кракозябрах, все правильно обрабатывается, все как нужно. Чтоб я без вас делал Спасибо.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения alex2012 Общие вопросы Javascript 5 23.02.2013 19:49
Регулярные выражения для javascript qwert_ukg Общие вопросы Javascript 3 20.04.2012 13:45
Регулярные выражения vivalaakam Общие вопросы Javascript 6 08.02.2012 09:41
нежадные регулярные выражения KOLANICH Общие вопросы Javascript 2 12.12.2010 01:08
Функции поиска и замены строк или регулярные выражения? Armen Общие вопросы Javascript 1 01.01.2010 12:35