Моя визитка
визитку можно сохранить
или отправить по электронной почте
Внимание!
Буду очень благодарен тому, кто поделится инвайтом на лепру ;-)
 
Две полезные функции
Америку, конечно, не открыл, и для тех, кто использует готовые библиотеки, это тоже будет не ново. Но для людей, которые сами пишут скрипты, может быть полезно.

Получение объекта по id.
От стандартной функции отличается только длиной ;-)
function $(elemid) 
{
return document.getElementById(elemid);
}
Получение объектов по имени класса.
Первый аргумент — имя класса, второй — имя тега (не обязательный), третий — внутри какого объекта искать (не обязательный):
function $$(strClass, strTag, objContElm) 
{
strTag = strTag || "*";
objContElm = objContElm || document;
var objColl = objContElm.getElementsByTagName(strTag);
if (!objColl.length && strTag == "*" && objContElm.all) objColl = objContElm.all;
var arr = new Array();
var delim = strClass.indexOf('|') != -1 ? '|' : ' ';
var arrClass = strClass.split(delim);
for (var i = 0, j = objColl.length; i < j; i++)
{
var arrObjClass = objColl[i].className.split(' ');
if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
var c = 0;
comparisonLoop:
for (var k = 0, l = arrObjClass.length; k < l; k++)
{
for (var m = 0, n = arrClass.length; m < n; m++)
{
if (arrClass[m] == arrObjClass[k]) c++;
if (( delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length))
{
arr.push(objColl[i]);
break comparisonLoop;
}
}
}
}
return arr;
}
9 Марта 2008, 20:51
Комментарии
Жека9 Марта 2008, 21:03Домашняя страницаЭлектронный адрес
Да, Америку не открыл.
Desperado9 Марта 2008, 21:04
Бля ахуеннааа))
Zhendalf9 Марта 2008, 21:05
Спасибо) Так код получается намного короче и приятнее)
Буду теперь использовать.
Евгений Валентинович9 Марта 2008, 21:11
Вы не могли бы сделать подсветку синтаксиса у себя в блоге? Читалось бы лучше.
Алексей aratak Осипенко9 Марта 2008, 22:58Домашняя страница
а если так:


function $(element) {
var result = null;
if (arguments.length > 1) {
var elements = [];
var length = arguments.length
for (var i = 0; i < length; i+ ) {
elements.push($(arguments[i]));
}
result = elements;
}

if (typeof element == 'string') {
var elements = document.getElementById(element);
}
if (element.constructor === Array) {
var elements = [];
var length = element.length

for(var i = 0; i < length; i ) {
elements.push($(element[i]));
}
}
result = elements;
return result;
}



в принципе, тот же getElementById, но слегка расширенный.
Такое же (или аналог) есть в JQuery, YUI и extJS. И я пользуюсь этой функцией, если не подключаю библиотек.


Вот еще одна полезная функция (пользую для отладки.):


function aa(obj) {
var result = "";
if (typeof(obj) == "object") {
objStr = typeof(obj) '\n';
for (var i in obj) {
objStr = '.' i '=' obj[i] '\n';
}
result = objStr;
} else {
result = obj;
}

return result;
}

/* вызов функции */
alert(aa(MyObj));

/* или вот такой вызов (если в alert не помещается) */
$('var_dump').innerHTML = aa(MyObj);




Grin9 Марта 2008, 23:07
отлично, спасибо )
Алексей aratak Осипенко9 Марта 2008, 23:24Домашняя страница
мож, немного оффтоп, но все-равно про JS.

Можно ли объяснить что это за функция?
Взято, самипонимаетеоткуда
(а кто "не в теме": http://lic1.ru/files/js/simpleAjax.js)


function getRequestStateText(code)
{
switch (code)
{
case 0:
return "Загрузка...";
break;
case 1:
return "Загрузка...";
break;
case 2:
return "Загрузка...";
break;
case 3:
return "Загрузка...";
break;
case 4:
return "Загрузка...";
break;
}
}


А то у меня такое чувство, что я не совсем понимаю ее смысл. Немножечко почитав код я так понял, что переменная "code" может в себе содержать что-нибудь из:
0 = uninitialized;
1 = loading;
2 = loaded;
3 = interactive;
4 = complete;

Ну, и даже если не смотреть в контекст почему бы не написать

...
if ((code > -1) and (code < 5))
{
return "Загрузка...";
}
...


Поясните, будте добры. Интересно же ;)
Grin10 Марта 2008, 1:34
В оригинале она показывала этапы запроса - начинается отправка, идет отправка и т.д. Потом я ее урезал. Ваш вариант, конечно, лучше
 

Простая и удобная CMS.
Установка и настройка от $300.


Вы найдете меня тут