Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.89/273: Рейтинг темы: голосов - 273, средняя оценка - 4.89
Tanos
0 / 0 / 0
Регистрация: 07.06.2015
#1

Обмен готовыми решениями

28.01.2008, 13:36. Просмотров 49454. Ответов 63
Метки нет (Все метки)

Предлагаю обмениваться готовыми, рабочими!, скриптами. Выкладываю первую библиотеку из 35 скриптов. Может кому и пригодится
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2008, 13:36
Ответы с готовыми решениями:

Обмен между фреймами
ситуация такова есть страница, на ней два фрейма в левом фрейме страница...

Как организовать обмен сообщениями
В общем, суть такова. Как лучше всего проверять новые записи в БД? Чат типо...

обмен файлами без фактической передачи
на хосте лежит искомый файл и рассчёт числа ПИ до миллиардного знака....

Обмен данными между двумя сервисами
Здравствуйте. Стоит перед до мной одна задача. В системе amocrm создать виджет....

Ajax Comet, мгновенный обмен личными сообщениями
Всем привет,я хочу написать мгновенный обмен личными сообщениями,типо как у...

63
Дмитрий-Нск
белый @ пушистый
2089 / 543 / 16
Регистрация: 13.07.2007
Сообщений: 1,881
28.01.2008, 14:08 #2
боюсь, что моя сборка покажется вам детской песочницей )
0
Vovan-VE
13154 / 6538 / 1038
Регистрация: 10.01.2008
Сообщений: 15,070
29.01.2008, 15:40 #3
Экстрактор HTML тегов на самопальном парсере. На скорость не проверял.
3
Вложения
Тип файла: rar TagExtactor.rar (9.1 Кб, 594 просмотров)
J.Smith
Кто вы, мистер Смит?
284 / 114 / 2
Регистрация: 03.03.2008
Сообщений: 525
21.05.2008, 21:04 #4
Небольшой самопальный опросник. Максимум 5 вариантов ответа, создается после заполнения небольшой формы. Может кому пригодится
2
Вложения
Тип файла: rar opros.rar (3.8 Кб, 467 просмотров)
arseny
0 / 0 / 0
Регистрация: 20.04.2015
Сообщений: 3
07.06.2008, 23:25 #5
Сначала я сам хотел скачать готовый скрипт, но кроме вариантов, которые извлекают курсы 2 курса валют, рублей и доллара, я ниче не нашел. Тогда я скачал один из таких скриптов и переделал его на свой лад, да еще и сделал вывод в иксмл :-) вот что получилось

Скрипт при запуске непосредственно считывает данные валют с сайта http://www.rbc.ua/
и записывает их файл иксмл, название которого - текущая дата, а
месторасположение - в том же каталоге что и сам скрипт. Скрипт можно
запускать как с командной строки, так и через веб интерфейс.

ПРИМЕР ВЫВОДИМЫХ ДАННЫХ

XML
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="windows-1251"?>
<valuta>
<date>20001122153928</date>
<dollar_spros>4.574</dollar_spros>
<dollar_predlozenie>4.859</dollar_predlozenie>
<dollar_nbu>505.000</dollar_nbu>
<euro_spros>7.175</euro_spros>
<euro_predlozenie>7.647</euro_predlozenie>
<nbu_euro>786.639</nbu_euro>
</valuta>

Разработчик: ARseny

Желаю приятного пользования скриптом :-)
0
outoftime
║XLR8║
756 / 656 / 211
Регистрация: 25.07.2009
Сообщений: 3,297
Записей в блоге: 5
26.07.2009, 14:08 #6
Javascript
1
2
3
4
5
6
7
8
9
...
if (document.title=="Дрессировка собак")
  {
    document.write('<a href="index.html"><b>Home page</b></a> ');
  }
if (document.title!="Дрессировка собак")
  {
    document.write('<a href="index.html">Home page</a> ');
  }...
менюшка на проверку title и выделение жирным текущего положения, тупо, просто, прикольно
0
BlackApricot
287 / 129 / 4
Регистрация: 15.02.2009
Сообщений: 520
23.08.2009, 10:20 #7
Простейшая, кроссбраузерная версия круглых углов.
Если на странице нужно много "круглых окошек", то для уменьшения размера HTML, лучше использовать вариант со скриптом.
Есть версии с бордюром, вплоть до графической версии, без картинок, всё построено на одном принципе.
7
Вложения
Тип файла: 7z Corners_Round_Background.7z (1.5 Кб, 214 просмотров)
BlackApricot
287 / 129 / 4
Регистрация: 15.02.2009
Сообщений: 520
31.10.2009, 07:09 #8
Окно с тенью.
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
    <head>
        <title>Серия, графичиские рамки. Окна с тенью</title>
        <meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
        <meta name="generator" content="CSE HTML Validator Халявной Версии">
        <link rel="stylesheet" type="text/css" href="Round_Shade/round_shade_C.css">
        <link rel="stylesheet" type="text/css" href="Square_Shade/square_shade_C.css">
        <script type="text/javascript" src="Round_Shade/round_shade_J.js"></script>
        <style type="text/css">
            .S1 {
                background: #ffc248;
                overflow: hidden;
                height: 6px;
                margin: 0 6px 0 0;
            }
            
            .S2 {
                background: black;
                overflow: hidden;
                height: 7px;
                margin: 0 0 0 7px
            }
            
            .s3 {
                border-right: black 6px solid;
                border-left: #ffc248 0 solid;
                background: #ffc248;
            }
            
            .s5 {
                text-align: justify;
                color: #004060;
                font-style: italic;
                font-family: 'Monotype Corsiva', Georgia, Sans-Serif;
                font-size: 120%;
                font-weight: 300;
                padding: 0 12px 7px 10px;
            }
            
            .s4 {
                padding: 0 10px 0 0;
                color: #e04000;
                text-align: right;
            }
        </style>
    </head>
    <body bgcolor="#a3c7bd" onload="initShade();" scroll="auto">
        <br clear="all">
        <br>
        <div align="center">
            <div style="width:49%;">
                <div align="right" style="margin:0 55px 5px 0">Сделано CSS</div>
                <div class="S1"></div>
                <div class="s3">
                    <!-- таблица нужна для осла, если использовать font-style:italic;, осёл неправильно использует это свойство -->
                    <table border="0" width="100%" cellpadding="0" cellspacing="0">
                        <tr>
                            <td>
                                <div class="s5">
                                    Образование граждан есть такое же национальное богатство государства, как золото и алмазы, находящиеся на его территории. Чем больше знаний будет у нашей молодёжи, чем лучше она может ими пользоваться, тем, несомненно, богаче и славнее будет наше государство.
                                    <div class="s4">Владимир Алексеевич Хлебников</div>
                                </div>
                            </td>
                        </tr>
                    </table>
                </div>
                <div class="S2"></div>
            </div>
        </div>
    </body>
</html>
5
RedMirage
21 / 21 / 1
Регистрация: 28.12.2009
Сообщений: 195
17.02.2010, 17:20 #9
Javascript
1
2
3
4
5
6
7
8
9
10
11
IE = (document.all);
NC = (document.layers);
Opera = (document.getElementById);
 
function getWidth() {
    if (IE || Opera)
        send = document.body.clientWidth;
    if (NC)
        send = window.innerWidth;
    return send;
}
Аналогично можно и для высоты экрана сделать.
1
Vovan-VE
13154 / 6538 / 1038
Регистрация: 10.01.2008
Сообщений: 15,070
10.05.2010, 09:41 #10
Избитая проблема с наследованием в JS. Собрав из нескольких источников самое лучшее, сделал свой вариант. Позволяет весьма наглядно и удобно описывать классы с возможностью наследования. Единственный странный шаг, на который пришлось пойти, - вместо new C() писать С.Create()

Необходимые описания:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// после создания экземпляра вызывает его метод Create с переданными параметрами
Function.prototype.Create = function() {
    // создаем экземпляр
    var o = new this;
    // если у него есть метод Create, то вызываем его с переданными параметрами
    if (typeof o.Create == 'function') {
        if (arguments.length) o.Create.apply(o, arguments);
        else o.Create();
    };
    return o;
};
 
// наследование от другой функции или от объекта Object
Function.prototype.Inherits = function(parent) {
    // если уже унаследован, то ошибка
    if (this.prototype && this.prototype.parent) {
        throw {message : 'Class already inherited'};
    };
    // если наследуем от функции
    if (parent && parent.constructor == Function) {
        this.prototype = new parent;
        this.prototype.constructor = this;
        this.prototype.parent = parent.prototype;
    }
    // если наследуем от Object
    else if (parent && parent.constructor == Object) {
        this.prototype = parent;
        this.prototype.constructor = this;
        this.prototype.parent = parent;
    }
    // иначе ошибка
    else {
        throw {message : 'Invalid type of parent'};
    };
    return this;
};
 
// декларация нового класса с необязательным родительским классом и необязательными полями
// метод Create будет использоваться как вызов конструктора
function Class(parent, fields) {
    // создаем реальный конструктор для наследования прототипов
    var C = function(){};
    // по умолчанию пустой прототип
    C.prototype = {};
    // наследуем от родителя
    if (parent) C.Inherits(parent);
    if (typeof fields == 'object') {
        // копируем поля в прототип
        for (var k in fields) {
            if (k != 'constructor') C.prototype[k] = fields[k];
        };
    };
    return C;
};
Использование:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// определяем класс A без родителя
var A = Class(null, {
    Create : function(x) {
        alert('A.Create');
        this.x = x;
    },
    Show : function() {
        alert('A: [' + this.x + ']');
    },
    foo : function() {
        alert('A.foo');
    }
});
 
// определяем класс B наследованный от A
var B = Class(A, {
    Create : function(x, y) {
        alert('B.Create');
        // вызываем наследованный Create()
        this.parent.Create.call(this, x);
        this.y = y;
    },
    Show : function() {
        // нет вызова к наследованному Show()
        alert('B: [' + this.x + ',' + this.y + ']');
    },
    foo : function() {
        alert('B.foo');
        // вызываем наследованный foo()
        this.parent.foo.call(this);
    },
    bar : function() {
        alert('B.bar');
    }
});
 
// создаем объект класса A
// 'A.Create(5)' вместо 'new A(5)'
var a = A.Create(5); // выдает A.Create
a.Show(); // выдает A: [5]
 
// создаем объект класса B
var b = B.Create(2, 3); // выдает B.Create и наследованное A.Create
b.Show(); // выдает B: [2,3]
 
a.foo(); // выдает A.foo
b.foo(); // выдает B.foo и наследованное A.foo
b.bar(); // выдает B.bar
Плюсы:
  1. Наглядное (ИМХО) и компактное описание класса.

Минусы:
  1. Извратное C.Create() вместо привычного new C() .
  2. Использовать класс можно только после его описания.
4
Vovan-VE
13154 / 6538 / 1038
Регистрация: 10.01.2008
Сообщений: 15,070
18.06.2010, 17:20 #11
IE6 element:hover

ie6.js
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function fixHover(element) {
    if (/MSIE (5\.5|6).+Win/.test(navigator.userAgent) && element && !element.fixHoverCallback && element.attachEvent) {
        element.fixHoverCallback = function(e) {
            e = e || window.event;
            var o = e.target ? e.target : e.srcElement;
            while (o && o != element) o = o.parentNode;
            if (o) {
                var c = o.className, c1;
                c1 = c;
                if (e.type == 'mouseover') {
                    if (!(/(?:^|\s)hover(?:\s|$)/i.test(c))) c1 = c + ' hover';
                }
                else {
                    c1 = c.replace(/\s+hover\s+/gi, ' ').replace(/^hover\s+|\s+hover$/gi, '');
                };
                if (c1 != c) o.className = c1;
            };
        };
        element.attachEvent('onmouseover', element.fixHoverCallback);
        element.attachEvent('onmouseout', element.fixHoverCallback);
    };
};
ie6.css
CSS
1
.fixhover {filter:expression(fixHover(this));}
Теперь пользуем
HTML5
1
<div class="fixhover">foo <span>bar</span> lol</div>
CSS
1
2
3
4
5
div:hover,
div.hover {color:#f00;}
 
div:hover span,
div.hover span {background:#fcc;}
Проверено в многоуровневых CSS-меню.
5
ostgals
882 / 677 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
07.11.2010, 11:20 #12
Снегопад для вашего хомяка.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 // вспомогательный объект для получения высоты и ширины клиентского окна браузера
var win = {
    w: function() { return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; },
    h: function() { return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; }
}
// объект нашего снегопада
var snow = {
    flake_image: 'snow.gif',
    flakes: [],
    timer: false,
    init: function(flake_count) {
        this.flakes = [];
        for (var i = 0; i < flake_count; i++) {
            var img = new Image();
            img.src = this.flake_image;
            img.style.position = 'absolute';
            img.style.zIndex = i;
            document.body.appendChild(img);
            this.flakes[i] = {
                img: img, 
                pos: function (x, y) {
                    this.img.style.left = x + 'px';
                    this.img.style.top  = y + 'px';
                    return this;
                },
                x: Math.random() * (win.w() - 50),
                y: Math.random() * win.h(),
                a: Math.random() * 20,
                s: { x: Math.random() * 0.1 + 0.02, y: Math.random() + 0.7 },
                d: 0
            }
        }
    },
    start: function(flake_count) {
        this.init(flake_count || 10);
        this.timer = setInterval(this.live(this), 50);
    },
    stop: function() { if (this.timer) { clearInterval(this.timer); this.timer = false; }; },
    live: function(ctx) { // замыкание
        return function() {
            for (var i in ctx.flakes) {
                var f = ctx.flakes[i];
                if ((f.y += f.s.y) > (win.h() - 50)) {
                    f.pos(f.x = (Math.random() * (win.w() - 50)), f.y = 0);
                } else {
                    f.pos(f.a * Math.sin(f.d += f.s.x) + f.x, f.y);
                }
            }
        };
    }
}
Пример использования:
Javascript
1
2
3
4
5
6
window.onload = function() { 
    // картинка со снежинкой (png или gif, чтобы прозрачности были)
    snow.flake_image = 'http://www.sunshineworldpoland.com/images/snowflake.png';
    // стартуем (параметр - количество хлопьев)
    snow.start(50);
}
Написал спонтанно, переписав древний скрипт из этой темы.
5
IzumeRoot
0 / 0 / 0
Регистрация: 10.10.2008
Сообщений: 2
04.01.2011, 17:58 #13
Не удовлетворили встроенные средства поиска в jqGrid. Решил написать свою собсвенную панель поиска для jqGrid.
Прошу критиковать и пользоваться. Встречайте smart search panel для jqgrid.
0
Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
07.02.2011, 23:25 #14
Может кому пригодится клонирование объекта или массива:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function clone(o) {
        var c = 'function' === typeof o.pop ? [] : {},
            p, v;
        for (p in o) {
            if (o.hasOwnProperty(p)) {
                v = o[p];
                if (v && 'object' === typeof v) {
                    c[p] = this.clone(v);
                }
                else {
                    c[p] = v;
                }
            }
        }
        return c;
    }
5
Micky
29 / 5 / 0
Регистрация: 19.02.2011
Сообщений: 3
19.02.2011, 15:54 #15
Для тех, кто хочет начать использовать элемент html5 canvas, рекомендую jCanvaScript. Похожие на jQuery функции позволят не терять время на изучение, а сразу начать рисовать, создавать анимацию или даже игры. На сайте, в разделе документация, много простых примеров.
5
Hagrael
БТР - мой друг
331 / 273 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
12.07.2011, 19:24 #16
Вот моя библиотека. Реализовано достаточно много функций, включая селекторы (правда, работают они жутко долго ).

fresh JS Framework.rar
1
GuardCat
Просто любитель
618 / 458 / 118
Регистрация: 20.01.2011
Сообщений: 862
Записей в блоге: 2
17.05.2012, 14:19 #17
Функция для расчёта переплат по любым кредитам. Написал небольшой комментарий. Выкладываю на случай, если кому-то понадобится проводить такие расчёты, а разбираться во всех скриптах (ещё и без комментариев) моего кредитного калькулятора будет неохота.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/**
      Объект calculateCredit имеет два метода:
    differ и annuitet. Первый метод рассчитывает кредит с
    дифференцированными платежами, второй --- с аннуитетными.
    
      Оба метода принимают три параметра: 
    sum (сумма кредита), 
    term (срок кредита), 
    rate (процентная ставка по кредиту). 
    
      Оба метода возвращают объект, содержащий:
    overpay: переплату по кредиту за весь срок,
    payments: массив, включающий все платежи по кредиту.
    (Метод annuitet возвращает массив, состоящий из 
    одного элемента, поскольку все платежи одинаковы).
    total:  общую сумму, которую нужно будет вернуть Банку.
    (с) GuardCat2012
*/
 
calculateCredit = (
 
  function() {
  
     var 
       errMsg = "Ошибочка. Проверьте введённые цифры",
      wrongResult = {
        overpay: errMsg, 
        payments: [errMsg],
        total: errMsg 
      }
    ;
    
    return {
    
      differ: function(sum, term, rate) {
         var 
           overpay, payment, count, x,
           result = { 
            total: 0,
            overpay: 0,
            payments: [ ]
          }
         ;
  
        for(var x in arguments) {
          arguments[x] = parseFloat(arguments[x]);
          if( isNaN( arguments[x] ) ) return wrongResult;
          if( arguments[x] === 0) arguments[x] = 0.0000000000001;
        }
 
        if(rate) rate = rate / 100 / 12; 
        while(term) {
          payment = sum / term;
          overpay =  sum * rate;
          result.overpay += overpay;
          count = result.payments.length; 
          result.payments.push( +(payment + overpay ).toFixed( 2 ) );
          result.total += result.payments[count];
          term--;
          sum -= payment;
        }
        result.total = result.total.toFixed(2);
        result.overpay = result.overpay.toFixed(2);
        return result
        
      },
      
      annuitet: function(sum, term, rate) {
        var 
          x, koeffAnn  ,
          result = { 
            total: 0,
            overpay: 0,
            payments: [ ]
          }
        ;
  
        for(var x in arguments) {
          arguments[x] = parseFloat(arguments[x]);
          if( isNaN( arguments[x] ) ) return wrongResult;
          if( arguments[x] === 0) arguments[x] = 0.0000000000001;
        }
        
        if(rate) rate = rate / 100 / 12; 
        koeffAnn = rate * Math.pow( ( 1 + rate ), term ) / (  Math.pow( ( 1 + rate ), term ) - 1 );
        result.payments.push( ( sum * koeffAnn ).toFixed( 2 ) );
        result.total = ( result.payments[0] * term ).toFixed( 2 );
        result.overpay = ( result.total - sum ).toFixed( 2 );
 
        return result;
      }
    }//object
    
  }//anonymous function
  
)()
1
__proto__
4 / 4 / 2
Регистрация: 19.08.2012
Сообщений: 79
19.08.2012, 23:06 #18
js анимация
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
function animate(opts) {
    var start = new Date();
    var timer = setInterval(function() {
        var progress = (new Date - start) / opts.duration;
        if (progress > 1) progress = 1;
        opts.step(opts.delta(progress));
        if (progress == 1) {
            clearInterval(timer);
            opts.compleat && opts.compleat(opts.elem);
        };
    }, opts.delay || 40);
    return timer;
}
 
 
function Prop(opts) {
    opts.step = function(prog) {
        var value;
        for (var i = opts.prop.length; i--;) {
            value = opts.start[i] + ((opts.value[i] - opts.start[i]) * prog);
            opts.elem.style[opts.prop[i]] = value + opts.units;
        };
    }
    if (!opts.delta) {
        opts.delta = function(progress) {
            return progress;
        }
    }
    return animate(opts);
}
/* 
анимация нескольких свойств:
 
-можно анимировать несколько свойств ['opacity','width']
  тогда start передается так [0,100](100 - начальное значение ширины) , а value так [1,500](500 -    конечное значение ширины)
 
*/
Prop({
    elem: document.getElementById('testBlock'), //элемент на котором происходит анимация 
    start: [0, 0], // начальное значение
    value: [100, 300], // конечное значение
    prop: ['top', 'left'], // свойство анимации
    duration: 2000, // время анимации
    units: 'px', //единицы измерение px || % || ''-без единици измерения
    delta: function(progress) { // НЕ обязательные параметр задающий вид анимации
        for (var a = 0, b = 1, result; 1; a += b, b /= 2) {
            if (progress >= (7 - 4 * a) / 11) {
                return -Math.pow((11 - 6 * a - 11 * progress) / 4, 2) + Math.pow(b, 2)
            }
        }
    }
});
основу анимации взял когда читал эту статью http://learn.javascript.ru/animation и немного расширил
0
newJS
2397 / 1070 / 307
Регистрация: 23.06.2011
Сообщений: 3,330
23.10.2012, 09:21 #19
Символьные объекты
По разным справочникам можно найти небольшое количество этих объектов, но, на самом деле объектов несколько десятков тысяч и все они есть в браузерах, само собой все браузеры поддерживают разное количество объектов, намного! меньше всех поддерживает браузер на который все сразу и подумали, для остальных разница микроскопична.
Поэтому проверять нужно во всех браузерах. Если поискать, то для многих объектов можно найти или дубль или похожий. Хватило бы терпения искать.

Программа свежая, вполне может иметь ошибки.
Надеюсь ИЕ6, ИЕ7 ни кому не нужен?
1
Вложения
Тип файла: 7z sim_obj3.7z (8.2 Кб, 58 просмотров)
newJS
2397 / 1070 / 307
Регистрация: 23.06.2011
Сообщений: 3,330
10.11.2012, 21:09 #20
Определение окончаний слов
Делалось под конкретную задачу, может функция и не универсальна.
PHPHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <title>Определение окончаний слов</title>
        <meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
        <script type="text/javascript">
            function butClick() {
                selectWord(document.getElementById("num").innerHTML);
            };
            function selectWord(L) { //получает число, можно строкой
                var m, n, x;
                //L=L<0?-L:L;//если может быть отрицательное число
                x = L % 10; //остаток от деления на 10, получить одну последнюю цифру
                //m=["книга", "книги", "книг"];
                m = ["день", "дня", "дней"];
                //если цифр в числе 2 и больше, забираем две последнии, иначе возвращаем число
                n = L > 9 ? L % 100 : L;
                //проверяем исключения, числа у которых 2 последнии цифры попадают в диапазон от 11 до 14 включительно, возвращают 2, если нет, то проверяем а не кончается ли число на 1, если число кончается на 1, возвращает 0, иначе 1
                n = n > 10 && n < 15 ? 2 : (L - 1) % 10 == 0 ? 0 : 1;
                //если число кончается на 1, возвращает 0, если числа кончаются на 2, 3, 4, возвращает 1, иначе 2
                n = n == 0 ? 0 : n == 2 ? 2 : x > 1 && x < 5 ? 1 : 2;
                document.getElementById("word").innerHTML = m[n];
            };
            /*
            книга, день - числа заканчивающиеся на 1, кроме чисел заканчивающихся на 11
            1, 21, 31, 41, 51, 61, 71, 81, 91, 101...
            книги, дня - числа заканчивающееся на 2, 3, 4, кроме чисел заканчивающихся на 11
            2, 3, 4, 22, 23, 24, 32, 33, 34, 42, 43, 44, 52, 53, 54, 62, 63, 64, 72, 73, 74, 82, 83, 84, 92, 93, 94, 102, 103, 104...
            книг, дней - числа заканчивающееся на 0, 5, 6, 7, 8, 9, и числа заканчивающиеся на 11, 12, 13, 14
            0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26, 27, 28, 29, 30, 35, 36, 37, 38, 39, 40, 45, 46, 47, 48, 49, 50, 55, 56, 57, 58, 59, 60, 65, 66, 67, 68, 69, 70, 75, 76, 77, 78, 79, 80, 85, 86, 87, 88, 89, 90, 95, 96, 97, 98, 99, 100, 105, 106, 107, 108, 109, 110....
            книг, дней - исключения из книга и книги
            то есть числа заканчивающееся на 1 дают книга, день, кроме чисел заканчивающихся на 11
            числа заканчивающееся на 2, 3, 4 дают книги, дня, кроме чисел заканчивающихся на 12, 13, 14
            в итоге исключения составляют числа заканчивающееся на 11, 12, 13, 14
            11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914, 1011, 1012, 1013, 1014...
            */
        </script>
    </head>
    <body>
        <div style="text-align:center; margin:111px 0 5px 0;">В левое поле введите число</div>
        <table border="1" width="33%" cellpadding="7" cellspacing="0" style="margin:0 auto;">
            <tr>
                <td width="15%">
                    <div id="num" contenteditable="true" style="width:70px; cursor:text; background:silver;">1</div>
                </td>
                <td width="60%">
                    <div id="word">&nbsp;</div>
                </td>
                <td>
                    <button onclick="butClick();" style="width:70px;">YES</button>
                </td>
            </tr>
        </table>
    </body>
</html>
1
10.11.2012, 21:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2012, 21:09

Обмен готовыми решениями
Привет, мир! Предлагаю здесь обмениваться готовыми решениями, исключительно...

Обмен готовыми решениями
&lt;?PHP echo getfilesize($_GET); // Функция для определения размера ...

Обсуждение класса постраничной навигации из темы "Обмен готовыми решениями"
Выделено из темы: http://www.cyberforum.ru/php/thread158262-page2.html Para...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru