Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка кнопки в JS 
:(
    Опции темы
stat007
Дата 2.8.2011, 17:02 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 521
Регистрация: 9.10.2008

Репутация: нет
Всего: -4



Есть такая некая site.html  страничка, в которой выводится табличка с переменными и стили: 
Код

<html>
<head>
<title>Site</title>
<style>
table.t1 {
    border-top: 1px #990000 dotted;
    border-bottom: 1px #990000 dotted;
}
th.t1 {
    border-left: 1px #990000 dotted;
    border-right: 1px #990000 dotted;
}
td.t1 {
    border-top: 1px #009900 dotted;
    border-left: 1px #009900 dotted;
    border-right: 1px #009900 dotted;
}
table.t2 {
    border-top: 1px #6311C6 dotted;
    border-bottom: 1px #6311C6 dotted;
}
th.t2 {
    border-left: 1px #6311C6 dotted;
    border-right: 1px #6311C6 dotted;
}
td.t2 {
    border-top: 1px #01ACBA dotted;
    border-left: 1px #01ACBA dotted;
    border-right: 1px #01ACBA dotted;
}
</style>
</head>

<!-- js: code run 848 beta-gun -->
<body>

<table width="300" class="t1">
    <tr>
        <th class="t1">1</th>
        <th class="t1">2</th>
        <th class="t1">3</th>
    </tr>
    <tr>
        <td class="t1">Vasya</td>
        <td class="t1">28.34</td>
        <td class="t1">-15.48</td>
    </tr>
    <tr>
        <td class="t1">Petya</td>
        <td class="t1">140.02</td>
        <td class="t1">29</td>
    </tr>
    <tr>
        <td class="t1">Masha</td>
        <td class="t1">-2.09</td>
        <td class="t1">-37.03</td>
    </tr>
</table>

</body>
</html>

Над этой табличкой со стилями необходимо сделать следующие задания:
Цитата

Над прилагаемым файлом site.html необходимо выполнить следующие действия:
1.Создать кнопку, по нажатию на которую, появится копия исходной таблицы, но с порядком полей: 1, 3, 2.  Применить для новой таблицы стили t2
2.Создать кнопку, по нажатию на которую, появится копия исходной таблицы, но с дополнительным полем  4, в котором будет сумма полей 2 и 3. Применить для новой таблицы стили t2
3.Создать кнопку, по нажатию на которую, сохранится в cookie ключ bbb со значением, равным 43
при последующем обновлении html  в исходной таблице и в таблицах из пунктов 1, 2, 5 и 6 все числа должны быть уменьшены на это значение и все операции должны производиться уже с этим новым уменьшенным числом
4.Создать кнопку, по нажатию на которую,  сформируется XMLHttp-запрос на сайт «http://domain.com», в котором параметрами будут переданы поле 1 и сумма полей 2 и 3 исходной таблицы, при условии что сумма больше 5. Перед отправкой вывести alert с этими параметрами. Имя параметра формируется так: p1 – поле 1, ps – сумма полей 2 и 3. Если под условие подходит несколько строк, то объединить это в один запрос
5.Создать кнопку, по нажатию на которую, появится iframe, внутри которого будет загружен site.html(без каких-либо параметров) с исходной таблицей,  у которой будут невидимыми строки с отрицательными числами в поле 3. В загруженном ифрейме копии исходных таблиц из пунктов 1, 2 и 4 не должны содержать невидимую строку исходной таблицы
6.Создать кнопку, по нажатию на которую, появится iframe, внутри которого будет загружен site.html(без каких-либо параметров) с исходной таблицей,  у которой будут невидимыми строки, у которых поле 1 равно «Petya».Это значение должно задаваться отдельной переменной.  В загруженном ифрейме копии исходных таблиц из пунктов 1, 2 и 4 не должны содержать невидимую строку исходной таблицы
7.Создать кнопку, по нажатию на которую, будет найден комментарий, начинающийся с  <!—js: и вывести alert с текстом, идущим после двоеточия

При выполнении задания категорически запрещается:
1. пользоваться jQuery, Mootools и другими подобными фреймворками
2.Вносить какие-либо изменения в html-код исходной таблицы

Решение заданий должно быть:
1.Написано только на javascript с использованием DOM-методов
2.Поддерживаться ИЕ6,7,8 и ФФ 3.5+
3.Все пункты задания должны быть выполнены как одно целое в составе одного javascript'a
4.Javascript-код должен быть размещен в конце site.html перед закрывающимся </body>
5.Все функции и переменные, которые будут написаны для решения заданий, должны являться методами и свойствами и принадлежать одному объекту. Например: 
hhh.tt = function() {… }
hhh.bb = 768

PM MAIL   Вверх
CruorVult
Дата 3.8.2011, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 3
Всего: 28



stat007, красавец. Может за тебя еще пойти работать и тебе же деньги отдавать?
PM MAIL Skype   Вверх
stat007
Дата 3.8.2011, 16:07 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 521
Регистрация: 9.10.2008

Репутация: нет
Всего: -4



 smile 
PM MAIL   Вверх
нуп
Дата 3.8.2011, 16:52 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 12
Всего: 33



50$ smile 
PM MAIL   Вверх
aarrttzz
Дата 15.5.2013, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.8.2008

Репутация: нет
Всего: нет



Код

<html>
<head>
<title>Site</title>
<style>
table.t1 {
    border-top: 1px #990000 dotted;
    border-bottom: 1px #990000 dotted;
}
th.t1 {
    border-left: 1px #990000 dotted;
    border-right: 1px #990000 dotted;
}
td.t1 {
    border-top: 1px #009900 dotted;
    border-left: 1px #009900 dotted;
    border-right: 1px #009900 dotted;
}
table.t2 {
    border-top: 1px #6311C6 dotted;
    border-bottom: 1px #6311C6 dotted;
}
th.t2 {
    border-left: 1px #6311C6 dotted;
    border-right: 1px #6311C6 dotted;
}
td.t2 {
    border-top: 1px #01ACBA dotted;
    border-left: 1px #01ACBA dotted;
    border-right: 1px #01ACBA dotted;
}
</style>
</head>

<!-- js: code run 848 beta-gun -->
<body>

<table width="300" class="t1">
    <tr>
        <th class="t1">1</th>
        <th class="t1">2</th>
        <th class="t1">3</th>
    </tr>
    <tr>
        <td class="t1">Vasya</td>
        <td class="t1">28.34</td>
        <td class="t1">-15.48</td>
    </tr>
    <tr>
        <td class="t1">Petya</td>
        <td class="t1">140.02</td>
        <td class="t1">29</td>
    </tr>
    <tr>
        <td class="t1">Masha</td>
        <td class="t1">-2.09</td>
        <td class="t1">-37.03</td>
    </tr>
</table>

<script>
var MAIN = {

    cookeValue : 0,
    task6_value : 'Petya',

    onload : function(){
        if (self == top)
            MAIN.pageLoad();
        else 
            MAIN.iframeLoad();
    }, 
    
    pageLoad : function(){

        var div = document.createElement('div');
        div.id = 'button_div';document.body.appendChild(div);
        
        MAIN.createButton(div, 'task 1', MAIN.task1);
        MAIN.createButton(div, 'task 2', MAIN.task2);
        MAIN.createButton(div, 'task 3', MAIN.task3);
        MAIN.createButton(div, 'task 4', MAIN.task4);
        MAIN.createButton(div, 'task 5', MAIN.task5);
        MAIN.createButton(div, 'task 6', MAIN.task6);
        MAIN.createButton(div, 'task 7', MAIN.task7);
        
        cookeValue = MAIN.getCookie('bbb');
        MAIN.reduceTableValue(cookeValue); 
    },
    
    iframeLoad : function(){
        document.body.removeChild( document.getElementById('button_div'));
        
        
    },

    reduceTableValue : function(cookeValue){
        var tables = document.getElementsByTagName('table');
        for (var i=0; i<tables.length; i++){
            for (var j=1; j<tables[i].rows.length; j++) {
                for (var k=1; k<tables[i].rows[j].cells.length; k++) {
                    var val = tables[i].rows[j].cells[k].innerHTML;
                    tables[i].rows[j].cells[k].innerHTML = 
                        parseFloat(val) - parseFloat(cookeValue);
                }
            }
        }
    },
    
    createButton : function(context, name, func){
        var button = document.createElement('input');
        button.type = 'button';
        button.value = name;
        button.onclick = func;
        context.appendChild(button);
    },
    
    changeTableClass : function(table, name){
        for (var i=0; i<table.rows.length; i++) {
            var row = table.rows[i];
            for (var j=0; j<row.cells.length; j++){
                row.cells[j].setAttribute("class", name);
            }
        }
        table.setAttribute("class", name);
    },
    
    createCookie : function (name, value, days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
        }
        else var expires = "";
        document.cookie = name + "=" + value + expires + "; path=/";
    },
    
    getCookie : function (c_name) {
        if (document.cookie.length > 0) {
            c_start = document.cookie.indexOf(c_name + "=");
            if (c_start != -1) {
                c_start = c_start + c_name.length + 1;
                c_end = document.cookie.indexOf(";", c_start);
                if (c_end == -1) {
                    c_end = document.cookie.length;
                }
                return unescape(document.cookie.substring(c_start, c_end));
            }
        }
        return 0;
    },
    
    getXmlHttp : function (){
      var xmlhttp;
      try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
        try {
          xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
          xmlhttp = false;
        }
      }
      if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        xmlhttp = new XMLHttpRequest();
      }
      return xmlhttp;
    },

    appendIframe : function(html){
        var newIframe = document.createElement('iframe');
        document.body.appendChild(newIframe);
        
        var doc = newIframe.document; 
        if(newIframe.contentDocument) 
            doc = newIframe.contentDocument; 
        else if(newIframe.contentWindow) 
            doc = newIframe.contentWindow.document; 
        
        doc.open(); 
        doc.writeln(html); 
        doc.close(); 
    },
    
    task1 : function(){
        var table = document.getElementsByTagName('table')[0];
        var copy_table = table.cloneNode(true);
        var col1 = 1; var col2 = 2;
        for (var i=0; i<copy_table.rows.length; i++) {
            var row = copy_table.rows[i];
            var tmp = row.cells[col1].innerHTML;
            row.cells[col1].innerHTML = row.cells[col2].innerHTML;
            row.cells[col2].innerHTML = tmp;
        }
        MAIN.changeTableClass(copy_table,'t2');
        document.body.appendChild(copy_table)
    },
    
    task2 : function(){
        var table = document.getElementsByTagName('table')[0];
        var copy_table = table.cloneNode(true);
        for (var i=0; i<copy_table.rows.length; i++) {
            var row = copy_table.rows[i];
            var tmp = row.cells[0].cloneNode(true);
            tmp.innerHTML = parseFloat(row.cells[1].innerHTML) +
                parseFloat(row.cells[2].innerHTML);
            row.appendChild(tmp)
        }
        copy_table.rows[0].cells[3].innerHTML = 4;
        MAIN.changeTableClass(copy_table,'t2');
        document.body.appendChild(copy_table)
    },

    task3 : function(){
        MAIN.createCookie('bbb','43',1);
    },
    
    task4 : function(){
        var request = '';
        var table = document.getElementsByTagName('table')[0];
        for (var i=1; i<table.rows.length; i++){
            var p1 = table.rows[i].cells[0].innerHTML;
            var ps = parseFloat(table.rows[i].cells[1].innerHTML) +
                        parseFloat(table.rows[i].cells[2].innerHTML);
            if (ps>5){
                var row_val = ' p'+ i +' - ' + p1 +' , ps - ' + ps;
                request+=row_val;
            }            
        }
        alert(request);
        var xmlhttp = MAIN.getXmlHttp()
        xmlhttp.open('POST', 'http://domain.com', false);
        xmlhttp.send(request);
    },
    
    task5 : function(){
        var html = document.getElementsByTagName('html')[0].innerHTML;
        html+='<'+'script> MAIN.task5_iframeLoad() <'+'/script>';
        MAIN.appendIframe(html);
    },
    
    task5_iframeLoad : function(){
        var table = document.getElementsByTagName('table')[0];
        for (var i=1; i<table.rows.length; i++){
                var elem = table.rows[i].cells[2];
                if (parseFloat(elem.innerHTML)<0)
                    elem.style.visibility='hidden';
        }
    },
    
    task6 : function(){
        var html = document.getElementsByTagName('html')[0].innerHTML;
        html+='<'+'script> MAIN.task6_iframeLoad() <'+'/script>';
        MAIN.appendIframe(html);

    },
    
    task6_iframeLoad : function(){
        var table = document.getElementsByTagName('table')[0];
        for (var i=1; i<table.rows.length; i++){
            if (table.rows[i].cells[0].innerHTML == MAIN.task6_value){
                for (var j=1; j<table.rows[i].cells.length; j++)
                    table.rows[i].cells[j].style.visibility='hidden';
            }
        }
    },
    
    task7 : function(){
        var html = document.getElementsByTagName('html')[0].innerHTML;
        var begin = '<!-- js:';
        var t1 = html.indexOf(begin);
        var t2 = html.indexOf('-->');
        alert(html.substr(t1+begin.length,t2-t1-begin.length));
    },

};

window.onload = function(){
    MAIN.onload(); 
}
</script>

</body>
</html>


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.