Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Залить ячейку таблицы нужным цветом (https://javascript.ru/forum/events/4886-zalit-yachejjku-tablicy-nuzhnym-cvetom.html)

Semen 27.08.2009 11:51

Залить ячейку таблицы нужным цветом
 
Каким образом можно залить ячейку таблицы нужным цветом из javascript кода? Я сейчас я использую такой вариант заливки:

...<TD><CENTER><span class="result" id="dy33"></span></CENTER></TD>...

...
... if (num2[xi1]==time1 && y==time2 && m==time3)
{
var bgc=document.getElementById(jim[xi]).style;
bgc=document.getElementById(jim[xi]).style;
bgc.backgroundColor="ff252a";
bgc.color="f9ff9d"
} else {...

Но при таком варианте идет заливка только вокруг значения, а мне необходимо залить всю ячейку таблицы, а еще лучше, с заданной шириной и высотой... Как это можно сделать?

B~Vladi 27.08.2009 11:54

вместо span используйте div с width:100%; height:100%

Semen 27.08.2009 12:41

Все, получилось, подсказали немного по другому, просто прописал id для TD:
...<TD id="dy33"><CENTER><span class="result" id="dy33"></span></CENTER></TD>...

и задал в CCS стиль для таблиц

B~Vladi 27.08.2009 12:46

Решений много - суть одна. Твои ID - некорректные. ID - это уникальный идентификатор. Это означает, что он должен быть один на всю страницу. Замени их классы.

Semen 27.08.2009 13:15

Почему они некорректные? У меня их 56 под номерами, по каждому id заносится определенное значение в соответствующую ячейку таблицы.

B~Vladi 27.08.2009 13:20

В коде, который вы привели - 2 одинаковых ID. И вообще, создавать 56(!) id - это полное извращение. Удалите все свои скрипты и сожгите книги, по которым вы учились. Прочитайте матерьял, который есть на этом сайте. Затем начните писать всё заново с нуля. Потом будем разговаривать.

Semen 27.08.2009 13:37

Да ладно. Я пишу календарь. И мой код в 1 фале, в отличие от календаря с точно такими же функциями (не сложная смена стиля, архив, даты праздников с оповещением) который занимает 5 файлов каждый из которых длинее одного моего. А на счет id одинакового, так именно благодаря этому выделяется настоящее число другим цветом и выделяется цветом соответствующая этому числу ячейка таблицы и никакого извращения тут нет. :no:

B~Vladi 27.08.2009 13:45

Цитата:

Сообщение от Semen
именно благодаря этому

Есть другие, намного правельнее, решения.

Цитата:

Сообщение от Semen
и никакого извращения тут нет.

Может извращения и нет, но это показывает ваш уровень программирования.

Если вы просите помощи на форуме, будте добры хотя бы прислушиватся к мнению других людей. Или вы считаете, что всё сами знаете?!

alexKniaz 27.08.2009 13:52

Извращения нет говорите? Есть.
Если есть JS, то прощё всем числам присвоить 1 класс, а текущему - 2-й.

Semen 27.08.2009 13:57

Нет, я не считаю, что все знаю, да и вариант с одинаковым id в TD и span подсказал специалист в программировании. На высокий уровень программирования я не претендую. И код календаря писал по придуманному мной алгоритму, как смог... - работает всетаки, а что там внутри, посетителей абсолютно не будет интересовать...

Semen 27.08.2009 14:08

Цитата:

Сообщение от alexKniaz (Сообщение 28452)
Извращения нет говорите? Есть.
Если есть JS, то прощё всем числам присвоить 1 класс, а текущему - 2-й.

В моем календаре, ячейки заполняются из 3-х массивов: от последнего понедельника предыдущего месяца; текущий месяц; от последнего дня месяца до первого воскресенья нового месяца. Мне очень удобно, в блоке заполнения ячеек: "разукрашивать массивы", а для второго массива чисел, вставлять туда, одновременно, выделение текущего дня, праздники, и оповещения о наступлении праздника... :)

B~Vladi 27.08.2009 14:47

Цитата:

Сообщение от Semen
подсказал специалист в программировании

В топку его. Одинаковые ID-грубейшая ошибка.

Semen 27.08.2009 21:00

Основной закон программирования: минимальный объем - максимальная функциональность!!! На коком бы языке небыла написана программа, она компилируется в одинаковый машинный код, поэтому плевать!!!, одинаковый id или разный, главное что задача решена и объем памяти занимаемый файлом гораздо меньше аналогичного (в отличие от 182 КВ оригинала, мой код занимает всего 30 КВ, и по функциональности мой более совершенный - функция архива уже готова к использованию, код не нужно дописывать: выбрав нужную дату, генерируется имя html файла который содержит, например, новости за выбранную дату, которые открываются в отдельном фрейме либо отдельной страницей...) (как написано: Навороченный календарь http://js.aceweb.ru/javascript/4/1/js.html ).

alexKniaz 27.08.2009 21:21

И по удобочитаемости ниже. Ну что сейчас какие-то 150Кб

Semen 27.08.2009 21:32

Удобочитаемость??? Ха-ха, програмный продукт - это для пользователей, их не интересует код. А для програмиста, гораздо удобнее читать 1 фаил, чем 5 :) Тем более, что есть еще интернет со скоростью 5 КВ/сек.

B~Vladi 28.08.2009 10:23

Цитата:

Сообщение от Semen
На коком бы языке небыла написана программа, она компилируется в одинаковый машинный код, поэтому плевать!!!

:lol:
Ну ты даёшь... Не все языки являются компилируемыми! Тем более HTML - это не язык программирования, а язык РАЗМЕТКИ гипертекста!
+JavaScript - не компилируемый язык, а интерпретируемый!!! Если не знаешь в чём отличия - википедия тебе в помощь!!!

Ты используешь HTML - придуманный людьми и задокументированный язык разметки. Если браузеры пишутся с учётом таких быдлокодеров, как ты, это не значит что таковым нужно быть!...

После таких постов даже общаться нет никакого желания.

alexKniaz 28.08.2009 10:47

при чём тут 1 файл или 5. Это с правильными id можно и в 1 запихнуть. Кстати, могу написать нормальный, небольшого объёма (не 182 кб). Опишите, что должен (делать страница с новостями, поздравлять) и увидие правльный и не большой код.

Semen 28.08.2009 13:28

Цитата:

Сообщение от B~Vladi (Сообщение 28507)
Ну ты даёшь... Не все языки являются компилируемыми! Тем более HTML - это не язык программирования, а язык РАЗМЕТКИ гипертекста!

А с чего вы взяли, что я считаю HTML - языком программирования? :-E Я этого не говорил. :no:
Цитата:

Сообщение от B~Vladi (Сообщение 28507)
+JavaScript - не компилируемый язык, а интерпретируемый!!! Если не знаешь в чём отличия - википедия тебе в помощь!!!

Будь то компилируемый язык, интерпретируемый или язык разметки гипертекста - в любом случае он переводится в машинный код, и как минимум при запуске программы этот код (будь он в виде отдельного файла .exe или каждый раз переводится в машинный код при запуске с помощью программы-интерпретатора) устанавливается в операционную память и исполняется. Я это к тому, что доступ к свойствам span и TD через одинаковый id осуществляется по разным путям и если компилятор или интерпритатор принял этот код и исполняет его значит никаких проблем не возникнет. Но самое главное, то что такой же подход (через одинаковый id) можно реализовать в любом языке программирования:
Смотрите:
1   var ld=document.getElementById(jim[xi])

и
2   var bgc=document.getElementById(jim[xi]).style


Несмотря на то что "корень" (document.getElementById(jim[xi])) в обоих случаях одинаковый, полученные программые "слова" - РАЗНЫЕ. Ну это анолагично:
электростанция

и
электростатика

машина понимает 1 и 2 как как "слова" ссылающиеся на разные "понятия", несмотря на то, что они "однокоренные"... Именно по этому я не вижу в таком подходе никакого преступления :no: и не понимаю почему оно так страшно для вас и вызывает такую агресию.

alexKniaz 28.08.2009 14:10

Просто такой использование id в спецификациях не предусмотрено, да и по определёнию он - уникальный идентификатор.
Ну а пользователю да, лишь бы работало

B~Vladi 28.08.2009 15:08

Цитата:

Сообщение от Semen
Будь то компилируемый язык, интерпретируемый или язык разметки гипертекста - в любом случае он переводится в машинный код

Я же сказал - в википедию! Интерпретируемый - на то он и интерпретируемый, что не переводится в машинный код!
Цитата:

Сообщение от Semen
значит никаких проблем не возникнет

Возникает.
Цитата:

Сообщение от Semen
Но самое главное, то что такой же подход (через одинаковый id) можно реализовать в любом языке программирования

Бред.

У вас каша в голове. Вы хоть знаете с чем работаете?!

Semen 28.08.2009 15:55

Нет не знаю, это я так в игрушки играюсь... :p А вам бы и самому не мешало б почитать литературу, желательно основы... Все! Я заканчиваю обсуждение данной темы!

B~Vladi 28.08.2009 16:07

Цитата:

Сообщение от Semen
А вам бы и самому не мешало б почитать литературу, желательно основы...

Спасибо, почитаю, особенно основы:)

alexKniaz 28.08.2009 16:10

Не, он как бы переводится в некоторых случаях. Но это не строго интерпредируемый язык - это транслируемый язык

B~Vladi 28.08.2009 16:12

Цитата:

Сообщение от alexKniaz
это транслируемый язык

:blink:

B~Vladi 28.08.2009 16:12

Цитата:

Сообщение от alexKniaz
Не, он как бы переводится в некоторых случаях.

Это браузеры закрывают глаза на таких мудаков.

alexKniaz 28.08.2009 16:14

Я не про JavaScript а про программинг вообще.

B~Vladi 28.08.2009 16:17

Цитата:

Сообщение от alexKniaz
Я не про JavaScript а про программинг вообще.

Ну может быть:)

Semen 28.08.2009 16:46

Даже в момент загрузки web-страницы, браузер либо получает уже готовый машинный код страницы (если сценарий исполняется на сервере; а для пользователя выводит код в формате языка HTML - если нажать "показать исходный код"), либо получает поток информации в формате языка HTML, затем транслирует его в машинный код и передает на исполнение электронным системам компьютера!!! Это же основы!!! Все инструкции выполняются электронными системами на одном, машинном коде!!!, а языки программирования - только предоставляют удобные средства для создания этого кода силами программиста!!! :blink:

alexKniaz 28.08.2009 16:51

Код страницы - не машинный!!!!!
Машинный код это команды процу сложить регистр A с регистром B, засунув результат в C.
Транслирование всегда происходит одинаково - браузер получает данные в HTML (НЕЗАВИСИМО, выполнен ли скрипт на сервере или нет), а не в машинных.
А то что у вас - это (процитрую учительницу математики):
Цитата:

ересь!
P.S. Вам бы с таким глубоким знанием основ бы о HTML и JS забыть, чесно говорю

B~Vladi 28.08.2009 16:52

Цитата:

Сообщение от alexKniaz
ересь!

Да да, помню:D

alexKniaz 28.08.2009 16:53

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

Semen 28.08.2009 16:56

Ну смотрите, как знаете - это Ваш недостаток в понимании электронных процессов...

B~Vladi 28.08.2009 16:57

Скорей всего, если не HTML (JS||CSS), то точно будет ZIP:)

B~Vladi 28.08.2009 17:00

Цитата:

Сообщение от Semen
это Ваш недостаток в понимании электронных процессов...

Аха, давай ещё вспомним про телефонные сигналы, посылаемые модемом:)

Откуда взятся машинному коду, если в пути сервер-клиент НЕТ компилятора?!

alexKniaz 28.08.2009 17:01

Электронные я знаю. Вы писали что выполненная на серваке скриптом пага приходит в маш.кодах. А это не так.
Транслирует всё уже браузер (из HTML в коды), а не сервер. И то происходит не трансляция а интерпретация.
P.S. Видимо википедией тут не пользуютя. Объясню
при трансляции создаёётся свой машинный код и он "тестится" 1 раз
А при интерпретации каждый раз командаЯ, в цикле например, тестируется по новый. Вот основное различие трансляции и интерпретации

alexKniaz 28.08.2009 17:03

А по теме.
Не уникальный "уникальные" идентификаторы лучше не юать, т.к. :
сейчас это работает. Но в спецификациях этого нет. И в более поздних браузерах может не работать

Андрей Параничев 28.08.2009 17:09

Глупый спор. Причем тут машинный код вообще?

Идентификатор на странице должен быть уникален, поскольку он используется для получения одного, уникального элемента на странице. Делать несколько элементов с одним id так же глупо, как делать массив элементов с дублирующимися ключами. Можно, но бессмысленно.

Кстати вы в курсе, что по приведенному вами коду:
...<TD id="dy33"><CENTER><span class="result" id="dy33"></span></CENTER></TD>...

Функция getElementById('dy33') будет всегда возвращать только элемент <td>?

Semen 28.08.2009 17:10

А вы попробуйте протестировать! :) - все будет работать

B~Vladi 28.08.2009 17:10

Цитата:

Сообщение от Semen
все будет работать

Я уже писал почему.

dscoma 03.09.2009 16:17

Прочитал тему от и до. Такое редко встретишь отношение, к тем кто пытается тебе помочь (B~Vladi у вас наверное большое терпение или огромное чувство юмора).

Решил зайти на страницу написанную професссионалом:

<iframe width=168 height=202 name="gToday:normal:agenda.js" id="gToday:normal:agenda.js" src="flatcjs.htm" frameborder="2" scrolling="no" style="border:ridge;" onmouseover="self.focus()">
</iframe>


Удивляет как это работает:lol: , что за спецификация, где можно так выражаться ;) .

!DOCTYPE     // где?
border:ridge; // где написано что так можно выражаться? 
                  // 1-й вариант: border: border-width || border-style || color 
                  // 2-й вариант: border-style: || color   
width=168 height=202 // где кавчки?


Утверждение, что уникальный идентификатор id = class, на мой взляд это полная ересь (относительно официальной спецификации), но это больше не доработка браузеров, что они позволяют такое назначение.

Новые браузеры делают упор на отображение сайта во что бы то нибыло не смотря на спецификации W3C.
А причиной этому появление различных WISIWIG редакторов типа FrontPage, Dreamweaver, пользуясь которыми современные верстальщики не знают даже, что такое HTML код и DTD, а точнее им это не надо.

Смешнее всего, что среди таких верстальщиков, используются различные програмные средства для так называемой "чистки кода". Т.е. если WISIWIG редактор, где-то случайно использовал свойство CSI типа style="text-decoration: underline;", то такое ПО заменяет этот сложный и громозкий с его точки зрения код на более простой устаревший <u></u>.

Все критикуют браузеры старых поколений, а новые чем лучше?

На этом мне кажется можно закрыть данную тему и сделать для себя определенные выводы.


Часовой пояс GMT +3, время: 03:41.