Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.08.2017, 06:12
Интересующийся
Отправить личное сообщение для Stownheidg Посмотреть профиль Найти все сообщения от Stownheidg
 
Регистрация: 09.08.2017
Сообщений: 16

Проблема с css
Здравствуйте! Проблема вот в чем: мне нужно, чтобы при нажатии на чекбокс исчезало поле для ввода, но если я задаю стили через внешний файл стилей, то для того, чтобы оно исчезло, мне нужно нажать 2 раза, если же указать стили в html через style="", то все работает как надо. Вот пример:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="1.css">
</head>
<body>
  <div>
   <input type="checkbox" id="check">
   <label for="check">OK</label>
   <input type="text" id="txt" style="display: none">
    </div>
<script type="text/javascript" src="1.js"></script>
</body>
</html>

Файл 1.js:
var gg = document.getElementById("check");
gg.addEventListener("click", click);

function click(){
    var dd1 = document.getElementById("txt").style.display;
    
    if(dd1=="none"){
        document.getElementById("txt").style.display="block";
    }else{
        document.getElementById("txt").style.display="none";
    }
}

Сверху все работает как надо, но если убрать style="display: none" из html, то работать будет криво:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="1.css">
</head>
<body>
  <div>
   <input type="checkbox" id="check">
   <label for="check">OK</label>
   <input type="text" id="txt">
    </div>
<script type="text/javascript" src="1.js"></script>
</body>
</html>

Файл 1.js:
var gg = document.getElementById("check");
gg.addEventListener("click", click);

function click(){
    var dd1 = document.getElementById("txt").style.display;
    
    if(dd1=="none"){
        document.getElementById("txt").style.display="block";
    }else{
        document.getElementById("txt").style.display="none";
    }
}

Файл 1.css:
#txt{
    display: none;
}

Как это исправить, если писать css код в html я не хочу?
Ответить с цитированием
  #2 (permalink)  
Старый 09.08.2017, 07:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <!--<link rel="stylesheet" href="1.css">-->
<style>
#txt {
    display: none;
}
</style>    
</head>
<body>
  <div>
   <input type="checkbox" id="check">
   <label for="check">OK</label>
   <input type="text" id="txt">
    </div>
<!--<script type="text/javascript" src="1.js"></script>-->
<script>
document.getElementById('check').onclick = function() {
    document.getElementById('txt').style.display = ['none', 'block'][+this.checked]
}
</script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 09.08.2017, 08:42
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от Stownheidg
но если убрать style="display: none" из html, то работать будет криво
Так это сразу видно из твоего алгоритма.
Сообщение от Stownheidg
var dd1 =
document.getElementById("txt").style.display;
if(dd1=="none"){...}
Но если изменить условие
document.getElementById("txt").style.display;
if(dd1!="none"){...}

Или, что еще лучше, перейти на классы - все будет работать.
Ответить с цитированием
  #4 (permalink)  
Старый 09.08.2017, 18:29
Интересующийся
Отправить личное сообщение для Stownheidg Посмотреть профиль Найти все сообщения от Stownheidg
 
Регистрация: 09.08.2017
Сообщений: 16

Сообщение от ksa Посмотреть сообщение
Но если изменить условие
document.getElementById("txt").style.display;
if(dd1!="none"){...}

Или, что еще лучше, перейти на классы - все будет работать.
Спасибо , но почему с классами будет работать? Я пробовал сделать через классы, все точно так же
Ответить с цитированием
  #5 (permalink)  
Старый 10.08.2017, 08:25
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от Stownheidg
Я пробовал сделать через классы, все точно так же
Значит опять алгоритм не правильный использовал...

Сообщение от Stownheidg
но почему с классами будет работать?
Я имел ввиду, что, такого рода работа, с классами более предпочтительна, нежели с атрибутом style.
Но бывает, что только через style можно решить задачу...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Встраиваем шрифт внутрь css sovsem-nub (X)HTML/CSS 0 26.09.2015 20:17
Подключение css bartle96 Элементы интерфейса 13 27.07.2013 19:03
Проблема с CSS GennadiyZm (X)HTML/CSS 4 21.02.2012 20:02
Проблема с поиском CSS парсера Solovei95 Общие вопросы Javascript 1 24.01.2012 05:49
Смена css стилей stvord Элементы интерфейса 5 03.09.2011 21:10