Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Изменить стиль у родителя!


Автор: hostsid 3.5.2011, 05:50
Ничегошеньки не понимаю в Javascript, но очень надо. Помогите пожалуйста!

Есть страница. На ней может быть контейнер (class="3") с содержимым "-". В этом случае после полной загрузки страницы надо выключить отображение его прародителя(class="1"):

Код

<div class="1">
   <div class="2">
      <div class="3"> - </div>
   </div>
</div>


Сделал так:

Код

<head>
<script language="javascript1.5">
function dn(){
if (div.innerHTML = "-") 
    {this.parentNode.parentNode.style.display = "none;"}
}
</script>
</head>

<body onLoad="dn();">
<div class="1">
   <div class="2">
      <div class="3"> - </div>
   </div>
</div>
</body>


Не работает. Что не так? Подскажите пожалуйста!

Автор: WolfAlone 3.5.2011, 09:51
Вы принципиально хотите использовать чистый JavaScript или допускается применение какой-либо библиотеки (JS-фреймворка)? В случае применения например, той же JQuery эта и многие другие вопросы решаются очень быстро и без "заточки" кода под каждый конкретный браузер.

Автор: Котокобра 3.5.2011, 14:04
<head>
<script language="javascript1.5">
function dn(x){
if (x.innerHTML = "-") 
    {x.parentNode.parentNode.style.display = "none;"}
}
</script>
</head>
<body onLoad="dn(document.getElementById('d'));">
<div class="1">
   <div class="2">
      <div id="d" class="3"> - </div>
   </div>
</div>
</body>

Автор: hostsid 3.5.2011, 14:22
Цитата(Котокобра @ 3.5.2011,  14:04)
<head>
<script language="javascript1.5">
function dn(x){
if (x.innerHTML = "-") 
    {x.parentNode.parentNode.style.display = "none;"}
}
</script>
</head>
<body onLoad="dn(document.getElementById('d'));">
<div class="1">
   <div class="2">
      <div id="d" class="3"> - </div>
   </div>
</div>
</body>

не подходит. нет возможности присвоить елементу АйДи. =(

Добавлено через 1 минуту и 41 секунду
Цитата(WolfAlone @ 3.5.2011,  09:51)
Вы принципиально хотите использовать чистый JavaScript или допускается применение какой-либо библиотеки (JS-фреймворка)? В случае применения например, той же JQuery эта и многие другие вопросы решаются очень быстро и без "заточки" кода под каждый конкретный браузер.

Ради одной это функции прикручивать JS-фреймворка не хочется(потому что не умею =)). 
потому да - чистый JS.

Автор: ksnk 3.5.2011, 15:04
Цитата(hostsid @  3.5.2011,  05:50 Найти цитируемый пост)
div.innerHTML = "-"

Это - присвоение innerHTML нового значения - минуса. Это действительно то, что нужно было?

Автор: hostsid 3.5.2011, 15:14
Цитата(ksnk @ 3.5.2011,  15:04)
Цитата(hostsid @  3.5.2011,  05:50 Найти цитируемый пост)
div.innerHTML = "-"

Это - присвоение innerHTML нового значения - минуса. Это действительно то, что нужно было?

ну, нужно проверить. если html содержание div'a соответствует символу минуса, то в этом случае надо менять стиль прародителя.

Автор: ksnk 3.5.2011, 15:57
div.innerHTML == "-"
Тогда, наверное, так должно быть?

Автор: hostsid 3.5.2011, 16:57
пришлось решить средствами пхп....лишняя партия запросов к базе...эх...

Автор: ksnk 3.5.2011, 17:04
Код

function dn(){
  var divs=document.getElementsByTagName('div');
  for(var i=0;i<divs.length.i++){
     if (divs[i].innerHTML.match(/^\s*\-\s*$/)){
        divs[i].parentNode.parentNode.style.display = "none;"
     }
  }
}

там в примере еще и пробелов не учитывалось...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)