Javascript и style

12
D
На сайте с 14.01.2007
Offline
153
893

народ, я завис.

ест такой "скрипт":

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<style type="text/css">
.letter {
width:30px;
height:25px;
float:left;
margin:2px 2px 2px 2px;
text-align:center;
padding-top:5px;
border:solid 2px #CCCCCC;
color:#CCCCCC;
text-align:center;
visibility:hidden;
}
</style>

<script type="text/javascript">
function show(){
var t=document.getElementById("main_div").getElementsByTagName("div");
alert(t[0].style.visibility)
}
</script>
</head>
<body style="background-color:#000000" onclick="show();">
<div id="main_div" style="width:418px;height:342px;margin:100px auto;visibility:visible" >
<div class="letter">A</div>
</div>
</body>
</html>

почему на клик выдаёт пустой стринг? где лопата?

заранее спасибо

П.С. тоже самое со всеми стилями, т.е. они "пустые". изменить значение можно, после этого даже выдаёт "правильный" стиль.

Николай В.
На сайте с 07.09.2006
Offline
62
#1

Dinozavr, а разве с помощью DOM можно получить доступ к внешним стилям? :)

В вашем случае можно либо прописать style="visibility: hidden" для каждого div-а класса letter, либо работать через className.

ultrabyte
На сайте с 28.01.2006
Offline
80
#2

function show(){

//var t=document.getElementById("main_div").getElementsByTagName("div");

var t=document.getElementById("main_div");

if(t){

alert(t.style.visibility)

}

}

За клиента на продвижение, откат 20% (http://qjp.ru/index.php/2009-03-04-06-46-45)
ultrabyte
На сайте с 28.01.2006
Offline
80
#3

Умнику приславшему коммент.

Выполни и посмотри.

D
На сайте с 14.01.2007
Offline
153
#4
Николай В.:
Dinozavr, а разве с помощью DOM можно получить доступ к внешним стилям? :)

не знал :)

className.

а вот и лопата :D

ultrabyte, мне нужен был доступ к куче "letter"-divов, которые в main_divе лежат. но всё-равно спасибо :)

ultrabyte
На сайте с 28.01.2006
Offline
80
#5

Тогда так.

<div id="main_div" style="width:418px;height:342px;margin:100px auto;visibility:visible" >

<div id="Li" class="letter">A</div>

<div id="Li" class="letter">A</div>

</div>

function show(){

var len = 0;

var Ob = document.getElementsByTagName("div");

for (i=0; i <Ob.length; i++)

{

alert(Ob.id);
if (Ob.id == "Li")
len++;
// ---действия
}
alert(len);
}

D
На сайте с 14.01.2007
Offline
153
#6
ultrabyte:
Тогда так.

<div id="main_div" style="width:418px;height:342px;margin:100px auto;visibility:visible" >
<div id="Li" class="letter">A</div>
<div id="Li" class="letter">A</div>
</div>



function show(){

var len = 0;
var Ob = document.getElementsByTagName("div");

for (i=0; i <Ob.length; i++)
{
alert(Ob.id);
if (Ob.id == "Li")
len++;
// ---действия
}
alert(len);
}

да, я так и сделал, только className вместо Id

ultrabyte
На сайте с 28.01.2006
Offline
80
#7

Да неважно, класснаме или id хотя без id или name, div не станет объектом.

Ну и финальный вариант где div-ы по одному отключаются

(я так понял вы хотите добраться до style.visibility у каждого дива по очереди) ?


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<style type="text/css">
.letter {
width:30px;
height:25px;
float:left;
margin:2px 2px 2px 2px;
text-align:center;
padding-top:5px;
border:solid 2px #FFFFFF;
color:#FFFFFF;
text-align:center;
visibility:;
}
</style>


</head>
<body style="background-color:#000000" onclick="show();">
<div id="main_div" style="width:418px;height:342px;margin:100px auto;visibility:visible" >
<div id=Li[] class="letter">A</div>
<div id=Li[] class="letter">A</div>
<div id=Li[] class="letter">A</div>
</div>

<script type="text/javascript">
function show(){

var len = 0;
var Ob = document.getElementsByTagName("div");

for (i=0; i <Ob.length; i++)
{

if (Ob.id == "Li[]"){
alert(Ob.id);
len++;
// ---действия
Ob.style.visibility='hidden';
}
}
alert(len);
}

</script>
</body>
</html>

Kolyaj
На сайте с 28.03.2006
Offline
69
#8
ultrabyte:
хотя без id или name, div не станет объектом.

Это в каком это смысле?

ultrabyte
На сайте с 28.01.2006
Offline
80
#9
Kolyaj:
Это в каком это смысле?

В прямом, если хотите обратится к элементу на странице как к объекту, у него должен быть Идентификатор.

для элементов форм (кнопки поля ввода и т.д.) подходит name в качесте идентификатора.

<input type="text" name="MyText" size="40" maxlength="256">

Для остальных элементов лучше использовать id.


<script>
function BorderShow(){
E1.border=1;
F1.size=8;
F1.color="#ff0000";
}
</script>

<table id="E1" height=150 width="100%" border="0" summary="" onclick="BorderShow();">
<tr>
<td><font id="F1" size="3" color="#000000">Hello</font></td>
</tr>
</table>
Kolyaj
На сайте с 28.03.2006
Offline
69
#10
ultrabyte:
если хотите обратится к элементу на странице как к объекту, у него должен быть Идентификатор.

Ну вот так и говорите, мол чтобы обратится к нему, а не то, что его не будет существовать. А потом уточняйте, что id нужен, чтобы можно было обратится к элементу с помощью метода getElementById, но кроме этого есть еще хотя бы getElementsByTagName, для которой id не нужен.

Вобщем способов получить ссылку на DOM-объект масса.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий