Изображение и текстовый запрос

У меня здесь очень простая html-страница:

http://www.nomorepasting.com/getpaste.php?pasteid=22407

А у меня на странице 4 слоя. Причина в том, что это структура гораздо более сложного сайта, я упростил ее, чтобы задать свой вопрос. По сути, я хочу иметь возможность нажимать на разные ссылки в слое 2 и изменять изображение в слое 1, однако способ, который я нашел для этого:

<script type = "text/javascript"><!--

function sbox(boxName,xname) {

    theBox = document.getElementById(boxName);

theBox.className = xname;



}

//-->

</script>

Приводит к исчезновению текста, который мне нужен, а также к способу щелкнуть и заменить любое изображение на текст. Я нашел альтернативный код javascript, но не смог применить его к своей html-странице.

<script type = "text/javascript">
function toggleImg(myid) {
  objtxt = document.getElementById(myid);
  objimg = document.getElementById(myid+'_img');

  if ( objtxt.style.display == 'block' ) { // Show image, hide text
    objtxt.style.display = 'none';
    objimg.style.display = 'block';
  } else { // Hide image, show text
    objimg.style.display = 'none';
    objtxt.style.display = 'block';
  }

}
</script>

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

Мой дополнительный вопрос заключается в том, должны ли слои заменять таблицы: всегда ли плохо использовать таблицы, когда вместо них можно использовать css? Легко ли использовать слои для создания эквивалентов строк и столбцов только для форматирования текстовых данных, а не структуры сайта?

Двойной интервал - отстой в вопросах, здесь мы действительно могли бы обойтись без него.

TravisO 02.12.2008 17:29

Рассмотрите возможность размещения кода в качестве образца страницы в другом месте со ссылкой и соответствующим фрагментом здесь. Вы, вероятно, найдете больше людей, желающих взглянуть.

biozinc 02.12.2008 17:29
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
433
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Таблицы предназначены для табличных данных (например, Excel). Если у вас есть сетка данных для отображения, используйте таблицу. Когда дело доходит до оформления страниц, используйте CSS-позиционирование.

Кроме того, навязчивое использование DIV - не лучший способ использовать CSS. Выработка привычки заключать все в DIV - это практика, известная как «мания div», и вы можете использовать Google по причинам, по которым это нехорошо.

Что вы имеете в виду под манией див? Разве не полезно иметь главный div, чтобы он мог вместить все?

user1253538 02.12.2008 17:35

Во-первых, при установке фонового изображения текст в DIV не скроется, независимо от того, насколько высоко вы установили Z-индекс. Это просто не работает. Одно из решений могло бы заключаться в том, чтобы обернуть внутренний текст в диапазон и скрыть диапазон, когда вы хотите, чтобы отображалось фоновое изображение div. Но, судя по вашему вопросу, вы не хотели так сильно менять свою структуру html, но я считаю, что вам придется, чтобы получить то, что вы хотите.

Образец кода:

<html>
    <head>
        <style type = "text/css">
            .class1{color:#000;}
            .class2{color:#00f;}
            .class3{color:#0f0;}
            .class4{color:#f00; background-image:url('someimage.jpg');}
        </style>
    </head>
    <body>
        <script type = "text/javascript">
            function sbox(divid, classname)
            {
                document.getElementById(divid).className=classname;
                if (document.getElementById(divid+"_text")!=null)
                    document.getElementById(divid+"_text").style.display = "none";
            }
        </script>
        <div>
            <a href = "#" onclick = "sbox('div1','class2');return false;">Test Div1, Class2(blue)</a><br/>
            <a href = "#" onclick = "sbox('div1','class3'); return false;">Test Div1, Class3(green)</a><br/>
            <a href = "#" onclick = "sbox('div1','class4');return false;">Test Div1, Class4(red)</a>
        </div>
        <div id = "div1" class = "class1"><span id = "div1_text">Blah blah blah</span></div>
    </body>
</html>

И я согласен с TravisO, HTML-таблицы следует использовать для табличных данных, а не как механизм компоновки. Есть также некоторые странности CSS с таблицами, когда у вас есть большая иерархия таблиц / строк / и т. д.

Спасибо за ваш ответ. Могу ли я просто изменить класс обратно на 1, чтобы вернуть текст, и по-прежнему полагаться на фоновые изображения, чтобы другие классы отображали их? Прошу прощения, если я не правильно понял. Что было бы лучше вместо изображения в качестве фона?

user1253538 02.12.2008 18:08
Ответ принят как подходящий

(В ответ на комментарий Joshxtothe4 ... мне нужно было больше места для ответа)

При изменении класса обратно на class1 текст, к сожалению, больше не будет отображаться. Код, который я дал, всегда скроет текст, если он находится в диапазоне. Вы можете сделать что-то вроде ниже и добавить еще один оператор CSS, который скроет диапазон, если используется class4. Тогда вам не обязательно иметь этот код в javascript. Возможно более чистое решение:

<html>
    <head>
        <style type = "text/css">
                .class1{color:#000;}
                .class2{color:#00f;}
                .class3{color:#0f0;}
                .class4{color:#f00; background-image:url('someimage.jpg');}
        .class4 span { display: none;}
        </style>
    </head>
    <body>
        <script type = "text/javascript">
                function sbox(divid, classname)
                {
                        document.getElementById(divid).className=classname;
                 }
        </script>
        <div>
        <a href = "#" onclick = "sbox('div1','class1');return false;">Reset</a><br/>
                <a href = "#" onclick = "sbox('div1','class2');return false;">Test Div1, Class2(blue)</a><br/>
                <a href = "#" onclick = "sbox('div1','class3'); return false;">Test Div1, Class3(green)</a><br/>
                <a href = "#" onclick = "sbox('div1','class4');return false;">Test Div1, Class4(red)</a>
        </div>
        <div id = "div1" class = "class1"><span id = "div1_text">Blah blah blah</span></div>
    </body>
</html>

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

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

user1253538 02.12.2008 18:45

Стиль CSS .class4 span {display: none;} скрывает внутренний текст внутри диапазона, если используется class4. Скрытие текста при использовании фонового изображения - гораздо более сложное решение, и на данный момент у меня нет на него ответа. Но я полагаю, что это будет решение на javascript.

Carl 02.12.2008 18:56

Теоретически, мог бы я просто иметь много классов с фоновым изображением и класс 4 без фонового изображения, разве это не сработает идеально?

user1253538 03.12.2008 13:32

Думаю, я не понимаю, что вы имеете в виду.

Carl 03.12.2008 17:52

Другие вопросы по теме