Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/466: Рейтинг темы: голосов - 466, средняя оценка - 4.88
tanos

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

28.01.2008, 13:36. Показов 90006. Ответов 73
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Предлагаю обмениваться готовыми, рабочими!, скриптами. Выкладываю первую библиотеку из 35 скриптов. Может кому и пригодится
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.01.2008, 13:36
Ответы с готовыми решениями:

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

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

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

73
белый @ пушистый
 Аватар для Дмитрий-Нск
2101 / 555 / 16
Регистрация: 13.07.2007
Сообщений: 1,890
28.01.2008, 14:08
боюсь, что моя сборка покажется вам детской песочницей )
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
29.01.2008, 15:40
Экстрактор HTML тегов на самопальном парсере. На скорость не проверял.
Вложения
Тип файла: rar TagExtactor.rar (9.1 Кб, 632 просмотров)
3
Кто вы, мистер Смит?
 Аватар для J.Smith
285 / 117 / 2
Регистрация: 03.03.2008
Сообщений: 525
21.05.2008, 21:04
Небольшой самопальный опросник. Максимум 5 вариантов ответа, создается после заполнения небольшой формы. Может кому пригодится
Вложения
Тип файла: rar opros.rar (3.8 Кб, 495 просмотров)
3
0 / 0 / 0
Регистрация: 20.04.2015
Сообщений: 3
07.06.2008, 23:25
Сначала я сам хотел скачать готовый скрипт, но кроме вариантов, которые извлекают курсы 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
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
26.07.2009, 14:08
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
288 / 131 / 4
Регистрация: 15.02.2009
Сообщений: 520
23.08.2009, 10:20
Простейшая, кроссбраузерная версия круглых углов.
Если на странице нужно много "круглых окошек", то для уменьшения размера HTML, лучше использовать вариант со скриптом.
Есть версии с бордюром, вплоть до графической версии, без картинок, всё построено на одном принципе.
Вложения
Тип файла: 7z Corners_Round_Background.7z (1.5 Кб, 218 просмотров)
7
288 / 131 / 4
Регистрация: 15.02.2009
Сообщений: 520
31.10.2009, 07:09
Окно с тенью.
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>
6
 Аватар для RedMirage
21 / 21 / 1
Регистрация: 28.12.2009
Сообщений: 195
17.02.2010, 17:20
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
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
10.05.2010, 09:41
Избитая проблема с наследованием в 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
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
18.06.2010, 17:20
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
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
07.11.2010, 11:20
Снегопад для вашего хомяка.
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);
}
Написал спонтанно, переписав древний скрипт из этой темы.
8
IzumeRoot
04.01.2011, 17:58
Не удовлетворили встроенные средства поиска в jqGrid. Решил написать свою собсвенную панель поиска для jqGrid.
Прошу критиковать и пользоваться. Встречайте smart search panel для jqgrid.
 Аватар для Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
07.02.2011, 23:25
Может кому пригодится клонирование объекта или массива:

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
29 / 5 / 0
Регистрация: 19.02.2011
Сообщений: 3
19.02.2011, 15:54
Для тех, кто хочет начать использовать элемент html5 canvas, рекомендую jCanvaScript. Похожие на jQuery функции позволят не терять время на изучение, а сразу начать рисовать, создавать анимацию или даже игры. На сайте, в разделе документация, много простых примеров.
5
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
12.07.2011, 19:24
Вот моя библиотека. Реализовано достаточно много функций, включая селекторы (правда, работают они жутко долго ).

fresh JS Framework.rar
1
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
17.05.2012, 14:19
Функция для расчёта переплат по любым кредитам. Написал небольшой комментарий. Выкладываю на случай, если кому-то понадобится проводить такие расчёты, а разбираться во всех скриптах (ещё и без комментариев) моего кредитного калькулятора будет неохота.
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
5 / 5 / 2
Регистрация: 19.08.2012
Сообщений: 79
19.08.2012, 23:06
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
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
23.10.2012, 09:21
Символьные объекты
По разным справочникам можно найти небольшое количество этих объектов, но, на самом деле объектов несколько десятков тысяч и все они есть в браузерах, само собой все браузеры поддерживают разное количество объектов, намного! меньше всех поддерживает браузер на который все сразу и подумали, для остальных разница микроскопична.
Поэтому проверять нужно во всех браузерах. Если поискать, то для многих объектов можно найти или дубль или похожий. Хватило бы терпения искать.

Программа свежая, вполне может иметь ошибки.
Надеюсь ИЕ6, ИЕ7 ни кому не нужен?
Вложения
Тип файла: 7z sim_obj3.7z (8.2 Кб, 69 просмотров)
1
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
10.11.2012, 21:09
Определение окончаний слов
Делалось под конкретную задачу, может функция и не универсальна.
PHP/HTML
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.11.2012, 21:09
Помогаю со студенческими работами здесь

Scanf с готовыми строками
Народ. Вопрос состоит в следующем: как применить scanf к уже введённой строке? Заранее спасибо за ответ

Как запускать браузер с готовыми настройками?
пишу этот код, но всё равно выдаёт ошибку: InvalidOperationException не обработано пользовательским кодом //Браузер ...

Подскажите сайты с готовыми спрайтами под меню
Подскажите сайты с готовыми спрайтами, лучше под меню. Пожалуйста...

Связь с готовыми mdb и accdb через форму
Добрый вечер! Нужна программная реализация подключения к бд, вывод данных из таблицы на форму через datagridview и сохранение новых...

На просторах интернета нашел файлик с готовыми макросами
Заливаю чтоб было, может кто найдет для себя готовые решения для своих задач.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru