Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Нужна помощь noob Java (https://javascript.ru/forum/css-html/41885-nuzhna-pomoshh-noob-java.html)

lolman 02.10.2013 21:35

Нужна помощь noob Java
 
Нужна помощь в написание javascript для изменения цвета ячейки при наведении на нее курсора.
сейчас использую для нужных ячеек CSS
код на ячейке.
<div onmouseover="this.parentNode.style.background='#CC FF66'" onmouseout="this.parentNode.style.background='#CCF FCC'" id="990007905966|$rn$" name="$id_obj$" onClick="ElemPress(this,1);">

Нужно написать такой код чтобы можно было не использовать в ячейке код
(onmouseover="this.parentNode.style.background='#C CFF66'" onmouseout="this.parentNode.style.background='#CCF FCC'" )
и не используя конструкцию style
т.к. все равно придеться в каждую ячеку писать style=function

Просто в одном месте написать обращение к форме (this).

danik.js 02.10.2013 22:04

Ячейка - это <td> , а не <div>. Ты что-то перепутал.

lolman 02.10.2013 22:57

да есть такое. в td заложен div.

lolman 02.10.2013 22:57

но проблема от этого не решилась.

BETEPAH 02.10.2013 23:26

Для чего писать скрипты там, где можно обойтись без этого?
<!DOCTYPE html>
<html><head>
<style type="text/css" media="screen">
	.div {
		background: #CCFFCC;
	}
	.div:hover {
		background: #CCFF66;
	}
</style>
</head><body>
<table>
	<tr>
		<td class="div"><div>Дива</div> не дива</td>
		<td class="div">не дива ваще</td>
	</tr>
</table>
</body></html>

lolman 03.10.2013 07:16

В самом начале я написал что нет необходимости писать style. Нужно имеено обращение к document.getElementById('this').

Скрипт я так понял должен быть не большой.

danik.js 03.10.2013 07:50

Цитата:

Сообщение от lolman
т.к. все равно придеться в каждую ячеку писать style=function

Что это значит?

lolman 03.10.2013 09:01

Короче мне срочно нужно на курсы java. В общем я понял что в div так или иначе придеться писать onmouseover и onmouseout. А в head писать скрипт с функцией .
onmouse="myFunc(this,'move');" onmouse2="myFunc(this,'out');"

myFunc (elem, action) {
var tdElem = elem.parentNode;
if(action=='move') {
if(tdElem.style.bgColor=='#CCFFCC') {
tdElem.style.backgroundColor = red;
}
}
else {
....
}
}

danik.js 03.10.2013 09:13

Цитата:

Сообщение от lolman
Короче мне срочно нужно на курсы java.

Ты в адеквате? Ты можешь внятно пояснить свою задачу? Зачем тебе Java, которая от Oracle? Она не для раскрашивания ячеек.

Чем тебе вариант от BETEPAH не устроил?

lolman 03.10.2013 09:21

Просто там где я работаю постройка шаблонов строиться на наших генераторах которая сама рисует таблицу. И в td я никак не смогу запихнуть class так как td формируется генератором

danik.js 03.10.2013 09:31

Ок, а как ты тогда собрался привязывать обработчики onmouseover/onmouseout без каких либо идентификаторов/классов?
Селектор не обязательно должен быть по классу. Можно так:
td:hover{..}
или
table.mytable td:hover{}

lolman 03.10.2013 09:58

Надо разобрать тот пример котоый я скинул
onmouse="myFunc(this,'move');" onmouse2="myFunc(this,'out');"

myFunc (elem, action) {
var tdElem = elem.parentNode;
if(action=='move') {
if(tdElem.style.bgColor=='#CCFFCC') {
tdElem.style.backgroundColor = red;
}
}
else {
....
}
}


А в диве писать
Div onmouse="myfunc(this,move);"

danik.js 03.10.2013 10:12

Цитата:

Сообщение от lolman
Надо разобрать тот пример котоый я скинул

Это голос свыше тебе нашептал? Любое "надо" как правило имет какие-то аргументы. Иначе это "хочу", а не "надо". Где аргументы?

lolman 03.10.2013 10:31

Начальник рекомендовал так сделать. Это аргумент

lolman 03.10.2013 10:40

<script type="text/javascript">
onmouse="myFunc(this,'move');"
onmouse2="myFunc(this,'out');"
myFunc (elem, action) {
var tdElem = elem.parentNode;
if(action=='move') {
if(tdElem.style.bgColor=='#CCFFCC') {
tdElem.style.backgroundColor = red;
}
}
else {
tdElem.style.backgroundColor = blue; }
}
</script>

<div onmouse="myfunc(this,move);">

Правда не работает. Где то ошибка только в силу моего не зания java не могу понять где.

BETEPAH 03.10.2013 10:44

Цитата:

Сообщение от lolman
В самом начале я написал что нет необходимости писать style. Нужно имеено обращение к document.getElementById('this').

Несколько раз пересмотрел то, что написано в самом начале и не нашел никакого элемента с id="this".
Если такой элемент есть, просто соберите в массив все td внутри него и проставьте им onmouseover и onmouseout

lolman 03.10.2013 11:19

<script type="text/javascript">
function myFunc(elem, action) {
var tdElem = elem.parentNode;
if(action=='move') {alert(tdElem.style.backgroundColor);
if(tdElem.style.backgroundColor=='#ccffcc') {
tdElem.style.backgroundColor = '#ccff66';
}
}
else {
tdElem.style.backgroundColor = '#ccffcc'; }
}
</script>


<div style="cursor:pointer;" onmouseover="myFunc(this,'move');" onmouseout="myFunc(this,'out');" id = "990007905720|$rn$" name = "$id_obj$" onClick="ElemPress(this,2);">$vid$</div>

В общем в таком виде все работает. Единственное что нужно надо дописать после background какой то метод который при распознавании цвета
В разных боаузерах работал. Т. К сейчас в ie он его распознает на алерте так #ccffcc , а где то может #CCFFCC . Метод типа upper. Не подскажите именно какой метод?

BETEPAH 03.10.2013 11:32

Вы заменили текст скрипта в инлайне на вызов функции там же и считаете, что справились с задачей начальника? ;)
Цитата:

Сообщение от lolman
Просто в одном месте написать

А метод - str.toUpperCase()

lolman 03.10.2013 11:55

Спс


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