Непонятки с масивом.
Есть такой код.
newdata=""; function datadelt(d){ localdata='Masha^Sasha^Dasha^Vania^|Shishken^Dekterov^Ivanov^Barankov^|'; localfundata=localdata.split('^|'); num=localfundata.length; data=[]; i=0; while(i<num){ data.push(localfundata[i].split('^')); i++; } delete data[d]; num=localfundata.length; newlocaldata=''; i=0; while(i<num){ newlocaldata+=data[i]; i++; } newdata=newlocaldata.replace(/\bundefined\b/g ,' '); alert(newdata); } datadelt(0);Который должен сначало разбивать строку на один массив потом ещё на один. Тем самым получаем ммм двойной массив или двумерный. . . . Короче говоря после его первая часть то есть текст Masha Sasha Dasha Vania должны быть удалены, а текст underfined который остаёться так же должен быть выкинут из строки. Но происходит каким-то неведомым мне способом (Похоже я совсем того) что мне IE выдаёт следующий результат: Masha Sasha Shishken Dekterov underfined ну по всей логике даже если удаляються первые элементы из обоих массивов почему это остаёться а то что идёт заними удаляеться? Так вроде чуть чуть пофиксил сам но всё равно теперь выдаёт: underfined Shishken Dekterov Ivanov Barankov. Как избавиться от underfined. Полный код. Так же не доработаный. . . . /*Вывод*/ function remlocaldata(){ localdata=localStorage.getItem('LF'); localfundata=localdata.split('^|'); num=localfundata.length; newdata=[]; i=0; while(i<num){ newdata.push(localfundata[i].split('^'));i++; } n=0; while(n<num){ url=newdata[n][0]; title=newdata[n][1]; html='<div id="aclick'+n+'"><a href="'+url+'">'+title+'</a> <div onclick="datadelt('+n+')"><br />Удалить '+title+'<br /> <br /></div></div>'; document.write(html); if(url==null&&title==null){a='aclick'+n+'';document.getElementById(a).parentNode.removeChild(document.getElementById(a));}n++;} } /*--------*/ /*Сохранение*/ function save(){ localdata=localStorage.getItem('LF'); if(localdata==null){ localdata=''+MyUrl+'^'+MyTitle'^|'; } else{ MyUrl=location.href; MyTititle=document.title; localdata+=''+MyUrl+'^'+MyTitle'^|';} localStorage.setItem('LF',localdata); } /*--------*/ /*Удаление*/ function datadelt(d){ localdata=localStorage.getItem('LF'); localfundata=localdata.split('^|'); num=localfundata.length; data=[]; i=0; while(i<num){ data.push(localfundata[i].split('^'));i++; } delete newdata[d]; newlocaldata=''; i=0; while(i<num){ newlocaldata+=data[i][0]; newlocaldata+=data[i][1];i++; } newlocaldata=newlocaldata.replace(/\bundefined\b/g ,''); localStorage.setItem('LF',newlocaldata); a='aclick'+n+'';document.getElementById(a).parentNode.removeChild(document.getElementById(a); } /*-----------*/ |
|
Вот именно что pop shift splice не подходят. Ибо нужно будет удалять из центра массива не трогая его других частей. А от underfined нужно избавиться из строки его нужно выкорчить. . . .
|
Цитата:
newdata=""; function datadelt(){ localdata='Masha^Sasha^Dasha^Vania^|Shishken^Dekterov^Ivanov^Barankov^|'; newdata=localdata.split('^|')[1].split('^').join(' '); alert(newdata); } datadelt(); |
рони,
Нет просто ещё много не знаю. .join(' '); Вот из за этой маленькой команды можно было не делать цикл? Но всё равно underfined ведь не куда не дениться как с ним быть? |
Цитата:
|
рони,
посли delet data[0]; остаёться underfined http://learn.javascript.ru/array-met...массива |
Цитата:
|
newlocaldata=newlocaldata.replace(/\bundefined\b/g ,'');
Не сработало. Вы человек умный. Можете помочь? Я честное слово искал и ищу но если вы поможете буду вам благодарен =) |
koeshiro,
что вам нужно получить функцией datadelt -- чем вас неустроил вариант из 4 поста |
Что получить? Взять данные из локального хранилища. Удалить не нужные данные выбраные пользователем сохранить оставшиеся данные.
|
Цитата:
проблему с underfined я вам решил в 4 посте осталось понять что вам нужно. |
А да. . . Он не подходит только потому что будет сложно создавать элеенты имея всего один массив не имея двумерного массива. НУ или покрайней мере мне так кажеться. . . . Но я поработаю над этим спасибо =) Жаль плюсик вам не могу поставить.
|
Цитата:
|
рони,
ну скажу вам так. Я решил сделать модуль "мои закладки или моё избраное" на базе локального хранилища. И решил задать скрипту ммм следующие действия. Сохранение---если локальное хранилище пустое---хохраняем туда титл страницы на которой находимся и её url если локальное хранилище не пусто --- берём даные из локального хранилища добавляем туда титл и url и снова сохраняем под тем же именем. Вывод даных--- получаем даные из локального хранилища --- разбиваем на массивы ---- узнаём их количество --- снова разбиваем на массивы для получения двумерных массивов то есть data[n][0] и data[n][1] в которых храняться титл и url и с этими даными создаём html строку и выводим её. Удаление --- берём номер из события onclick дива с надписью удалить вызываем даные из локального хранилища превращаем в массив и удаляем не нужную его часть. после снова превращаем в строку и сохраняем в локальное хранилище. |
Короче говоря получилось теперь вот так.
/*Сохранение*/ function save(){ localdata=localStorage.getItem('LF'); if(localdata==null){ MyUrl=location.href; MyTitle=document.title; newlocaldata=''; newlocaldata+=MyUrl; newlocaldata+='^'; newlocaldata+=MyTitle; newlocaldata+='^'; newlocalStorage.setItem('LF',newlocaldata);alert('true')} else{ MyUrl=location.href; MyTitle=document.title; newlocaldata=localdata; newlocaldata+=MyUrl; newlocaldata+='^'; newlocaldata+=MyTitle; newlocaldata+='^'; localStorage.setItem('LF',newlocaldata);alert('false')}} /*--------*/ /*Вывод*/ function remlocaldata(){ localdata=localStorage.getItem('LF'); data=localdata.split('^'); num=data.length;n=0; while(n<num-1){ url=data[n]; n++; title=data[n]; html='<div id="aclick'+n+'"><a href="'+url+'">'+title+'</a> <div onclick="datadelt('+n+')"><br />Удалить '+title+'<br /> <br /></div></div>'; document.write(html); n++;} } /*--------*/ /*Удаление*/ function datadelt(d){ localdata=localStorage.getItem('LF'); data=localdata.split('^'); delete data[d]; delete data[d+1]; newlocaldata=data.join('^'); localStorage.setItem('LF',newlocaldata); a='aclick'+d+'';document.getElementById(a).parentNode.removeChild(document.getElementById(a)); } /*-----------*/save();remlocaldata();Но что-то снова не так. . . . |
koeshiro,
ок алгоритм понятен теперь снова да ладом -- var str = 'значение' ; было var data = [значение]; стало чего то удалили новая data = [значение]; заполните хотябы один образец для примера. |
да да . . . Дело по большей мере в моей не внимательности . . . там название не такое. . . тут не сохранил. . .
|
Это я поправил. . . . Но теперь проблема в другом. После удаления остаёться пробел! То есть пустое место после обнавления страницы. Где написано просто удалить.
|
koeshiro,
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <script> /*Сохранение*/ function save(){ localdata=localStorage.getItem('LF'); if(!localdata){ MyUrl=location.href; MyTitle=document.title; var newlocaldata=''; newlocaldata+=MyUrl; newlocaldata+='^'; newlocaldata+=MyTitle; //newlocaldata+='^'; localStorage.setItem('LF',newlocaldata)} else{ MyUrl=location.href; MyTitle=document.title; newlocaldata=localdata; newlocaldata+='^'; newlocaldata+=MyUrl; newlocaldata+='^'; newlocaldata+=MyTitle; localStorage.setItem('LF',newlocaldata)}; } /*--------*/ /*Вывод*/ function remlocaldata(){ localdata=localStorage.getItem('LF'); data=localdata.split('^'); num=data.length;n=0; while(n<num-1){ url=data[n]; n++; title=data[n]; html='<div id="aclick'+n+'"><a href="'+url+'">'+title+'</a> <div onclick="datadelt('+n+')"><br />Удалить '+title+'<br /> <br /></div></div>'; document.write(html); n++;} } /*--------*/ /*Удаление*/ function datadelt(d){ localdata=localStorage.getItem('LF'); data=localdata.split('^'); alert('data до удаления: ' + data) data.splice( d-1,2); alert('data после удаления: ' + data); newlocaldata=data.join('^'); localStorage.setItem('LF',newlocaldata); a='aclick'+d+'';document.getElementById(a).parentNode.removeChild(document.getElementById(a)); } /*-----------*/save();remlocaldata(); </script> </body> </html> |
Мда. . . а я об этом методе нислухом ни духом. . .
|
Спасибо вам =) Жаль плюсик добавить нельзя =)
|
Часовой пояс GMT +3, время: 07:39. |