13.03.2013, 01:14
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
фонарик,
Наверняка - onclick="alert(arraysFind(this.id))" -корректнее, поскольку пользователь нажав - еще раздумывает, а вот нажав отпустив - ожидает действия
|
|
13.03.2013, 15:08
|
Кандидат Javascript-наук
|
|
Регистрация: 23.02.2013
Сообщений: 127
|
|
Вот вы привели пример с alert, и представить себе не можете сколько часов я думал и пытался сделать так, чтобы alert работал непосредственно из функции arraysFind Но все-таки, не смотря на то, что смотреть на ваш скрипт изнутри было страшновато, проблему решил Оказалось, что там alert вне тела самой функции, потому и не работало Большое вам спасибо за подсказку.
|
|
13.03.2013, 18:46
|
Кандидат Javascript-наук
|
|
Регистрация: 23.02.2013
Сообщений: 127
|
|
Никак не могу понять, почему нельзя определить размер массива Приписываю к массиву .lenght, но не работает. Подскажите пожалуйста, как в вашем скрипте определить размер массива?
http://learn.javascript.ru/play/0mZIH
(строка 43)
|
|
13.03.2013, 18:55
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
фонарик, массив Out , а arr - его элементы
alert(Out.length)
|
|
13.03.2013, 19:06
|
Кандидат Javascript-наук
|
|
Регистрация: 23.02.2013
Сообщений: 127
|
|
рони, похоже на то Получается тогда что-то вроде:
alert(Out[0].length)
Спасибо за подсказку
|
|
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>
|
|
16.03.2013, 05:42
|
без статуса
|
|
Регистрация: 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.
|
|
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.
|
|
16.03.2013, 16:52
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от фонарик
|
В переменных itm_ перед названием, т.е после кавычки стоит пробел
|
Поправил
В исходнике строки
[ itm_ankle_boots, itm_leather_jacket, itm_linen_tunic, itm_leather_vest, itm_cudgel, itm_warh
|
|
16.03.2013, 17:54
|
Кандидат Javascript-наук
|
|
Регистрация: 23.02.2013
Сообщений: 127
|
|
Проверил на своих кракозябрах, все правильно обрабатывается, все как нужно. Чтоб я без вас делал Спасибо.
|
|
|
|