Jump to content

Скрипт не работает в Opera


ser-yoga
 Share

Recommended Posts

  • Replies 419
  • Created
  • Last Reply

Top Posters In This Topic

Ну спасибо ребята. Я и в правду рад и благодарен. Я раньше писал иначе. Не так.

(Не такой я уж и крутой чувак, есть ещ? чему меня поучить. Не зря я вас тут пытал.)

Вот вам за ето (авось сгодится на что):

String.prototype.splitting=function(str){
var c=str.substring(0,1);
var s=str.substring(1);
var st=this;
if(st.indexOf(c)!=-1){
if(c=='n')c='rn';
st=st.split(c);
if(s!='')for(var i in st)st[i]=st[i].splitting(s)
}
else if(s!='')st=st.splitting(s);
return st
};

Эта функция превращает строку в многомерный массив. Пример:

var a="1,2,3;4,5,6;,7,8,9".splitting(";,");

Если у вас str - это строка, а в ней содержимое текстового файла, прич?м файл содержит таблицу, ячейки которой разделены знаками табуляции (таблица в ASCII кодах).

то нужно писать так:

var a=str.splitting("nt");

тогда а - двумерный массив строк.

Вопросец: где о том, как правильно писать в объектах на JavaScript, можно почитать? (Ссылку, плееез.)

Link to comment
Share on other sites

Вот вам за ето (авось сгодится на что):
String.prototype.splitting=function(str){
var c=str.substring(0,1);
var s=str.substring(1);
var st=this;
if(st.indexOf(c)!=-1){
if(c=='n')c='rn';
st=st.split(c);
if(s!='')for(var i in st)st[i]=st[i].splitting(s)
}
else if(s!='')st=st.splitting(s);
return st
};

А не судьба было нормальный split использовать? Или задача снова была сделать максимально неэффективно?

Link to comment
Share on other sites

Вот так оно и быстрее и удобнее получается.

Это будет работать, если у тебя массив тр?хмерный? А если у него размерность не целая?

Что, на каждый случай свою функцию писать.

То, что я вам дал, превратит строку в любой массив. Пример:

var a="1,2:3:4,5;6,7,8;9,a,b".spliting(";,:");

Обратите внимание, а[0][0] -число(1),а[0][1] - массив([2,3,4])

Link to comment
Share on other sites

Да, Алекс, вы не объективны, лишь потому что не хотите признавать другие браузеры.

Я не хочу спорить с таким как вы, лишь потому что вы будите уперто стоять на своем, не желая открывать глаза на новые разработки, на все то, что твориться в мире...

Вы будите уперто искать проблему в скрипте, когда сама проблема находиться внутри вас.

Удачи. Я вежлив, но вы дурак.

Link to comment
Share on other sites

Вот так оно и быстрее и удобнее получается.

Это будет работать, если у тебя массив тр?хмерный? А если у него размерность не целая?

Что, на каждый случай свою функцию писать.

То, что я вам дал, превратит строку в любой массив. Пример:

var a="1,2:3:4,5;6,7,8;9,a,b".spliting(";,:");

Обратите внимание, а[0][0] -число(1),а[0][1] - массив([2,3,4])

Ну вот?

<script>
String.prototype.splitting = function(){
var arr = this;
if (arguments.length){
arr = arr.split(arguments[0]);
if ((arguments.length > 1) && arr){
var args = [];
for (var i=1;arguments[i];i++)
args[i-1] = arguments[i];
for(var i in arr)
arr[i] = this.splitting.apply(arr[i], args);
}
}
return arr;
};

String.prototype.splitting = function(){
var arr = this;
if (arguments.length){
arr = arr.split(arguments[0]);
if ((arguments.length > 1) && arr){
for(var i in arr)
arr[i] = this.splitting.apply(arr[i], arguments.slice(1));
}
}
return arr;
};

var a="1,2:3:4,5;6,7,8:9;t,a,b".splitting(";", ",", ":");
document.write('<table border=1>');
for (var i in a){
document.write('<tr>');
for (var j in a[i]){
document.write('<td>');
for (k in a[i][j]) {
document.write('<p>' + a[i][j][k] + '</p>');
}
document.write('</td>');
}
document.write('</tr>');
}
document.write('</table>');
</script>

там 2 варианта, легко докадаться какой где не работает.

Link to comment
Share on other sites

Лет 6-7 назад так писал:

function Objects(){
if(arguments[0]){
this.tag=arguments[0];
this.tag.handler=this;
this.childElement;
this.style=this.tag.style;
this.className=this.tag.className;
this.parentElement=this.getparentElement();
this.tag.onmouseover=action;
this.tag.onclick=action;
this.tag.ondblclick=action;
this.tag.onmouseout=action;
this.addElement();
if(this.tag.file){
this.tag.addBehavior('#default#download');
this.load()
}else this.onload()
}
};
Objects.prototype.all = new Array();
Objects.prototype.addElement = function(){
this.number=this.all.length;
this.all[this.all.length]=this
};
Objects.prototype.addchildElement = function(Element){
if(!this.childElement)this.childElement=new Array();
for(var n in this.childElement)if(this.childElement[n]==Element)return;
this.childElement[this.childElement.length]=Element
};
Objects.prototype.getparentElement=function(){
this.parentElement=getElement(this.tag.parentElement);
if(!this.parentElement)return;
else this.parentElement.addchildElement(this);
return this.parentElement
};

Впрочем, вс? это выпендр?жь. Я понимаю, почему у вас код 2 метра. (Это же так круто! 2 мега скрипта!!!)

Link to comment
Share on other sites

Алкс2, интересно, а что вам мешает использовать упрощенную запись массива в JSON:

var massiv = {
[1,2],
[3,4],
[5,6],
[7,8]
};

// можно строкой:

var massiv2 = [[1,2],[3,4],[5,6],[7,8]];

// можно записывать объекты(псевдоклассы):

var object = {
method: function(a, b){
alert(a + ' - ' + b + ' ... ' + this.var1);
},
var1: 'content'
};

Дело не в том, выпендреж или нет.. Просто ты реально экономишь ценные байты. Или вы еще скажете, что не хотите слышать о тех, кто сидит на Диалапе?

var array1 = new Array();

// равносильно

var array2 = [];

Link to comment
Share on other sites

Лет 6-7 назад так писал:

function Objects(){
if(arguments[0]){
this.tag=arguments[0];
this.tag.handler=this;
this.childElement;
this.style=this.tag.style;
this.className=this.tag.className;
this.parentElement=this.getparentElement();
this.tag.onmouseover=action;
this.tag.onclick=action;
this.tag.ondblclick=action;
this.tag.onmouseout=action;
this.addElement();
if(this.tag.file){
this.tag.addBehavior('#default#download');
this.load()
}else this.onload()
}
};
Objects.prototype.all = new Array();
Objects.prototype.addElement = function(){
this.number=this.all.length;
this.all[this.all.length]=this
};
Objects.prototype.addchildElement = function(Element){
if(!this.childElement)this.childElement=new Array();
for(var n in this.childElement)if(this.childElement[n]==Element)return;
this.childElement[this.childElement.length]=Element
};
Objects.prototype.getparentElement=function(){
this.parentElement=getElement(this.tag.parentElement);
if(!this.parentElement)return;
else this.parentElement.addchildElement(this);
return this.parentElement
};

Впрочем, вс? это выпендр?жь. Я понимаю, почему у вас код 2 метра. (Это же так круто! 2 мега скрипта!!!)

Вы просто не поняли, что mVisitPrototype = NewClass(mAbstractObjectClass, {...

это наследование класса mAbstractObjectClass

потом я опишу класс mVisit = NewClass(mVisitPrototype, {...

который будет наследовать все функции и свойства mVisitPrototype...

Так вот это сложная иерархия наследования... что-то ваш код на это непохож...

Link to comment
Share on other sites

var object = {

method: function(a, ;){

alert(a + ' - ' + b + ' ... ' + this.var1);

},

var1: 'content'

};

Забавная конструкция. Я такой никогда не пользовался. Напоминает Java. (Может потому и JavaScript?)

Где это может поможет облегчить жизнь?

Link to comment
Share on other sites

2 homm

Чем сложнее, тем - круче?

Ну мой вариант:

во первых ? не медленее, кое где чуть быстрее

во вторых ? более нагляднее передаются разделители

в третьих ? разделитель может иметь сколько угодно символов, а при желании?

в четвертых ? ? можно передавать в качестве разделителей регулярные выражения.

По 3-м показателям лучше, удобнее? а ты говоришь ?чем сложнее?? Дремучий ;)

А вообще Maslakoff, естественно, прав, если есть возможность передавать JSON, лучше в нем.

Link to comment
Share on other sites

var object = {

method: function(a, ;){

alert(a + ' - ' + b + ' ... ' + this.var1);

},

var1: 'content'

};

Забавная конструкция. Я такой никогда не пользовался. Напоминает Java. (Может потому и JavaScript?)

Где это может поможет облегчить жизнь?

При разработке оъектной модели снаследованием классов...

Link to comment
Share on other sites

При разработке оъектной модели снаследованием классов...

Я же говорю, пробовал (см. #389). По этой схеме у меня написан магазин Янсона(54К). Код получается большой и нечитабельный. Я от этого отказался. Может - я был не прав, но весь мой магазин Аквария(посвежее) сегодня убирается в 30К.

Я отказался использовать OOP-возможности JScript, потому, чтог научился писать внутри MSDOM. (Раньше я создавал параллельную объектную модель.)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy