AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 79447374
Accepted
levent001
levent001
Asked: 2025-02-18 14:59:37 +0800 CST2025-02-18 14:59:37 +0800 CST 2025-02-18 14:59:37 +0800 CST

Abra DIV/SPAN no lado direito (com conteúdo) no link Clique

  • 772

Estou exibindo os resultados em uma tabela HTML para respostas certas e erradas. insira a descrição da imagem aqui

Cada pergunta tem um "Explain Link" como a última coluna da tabela. Se clicado, quero um novo DIV ou SPAN aberto adjacente a ele no lado direito (expanda conforme necessário). Ele mostrará a explicação detalhada para aquela pergunta em particular. Ele incluirá texto que pode ser formatado em HTML com tags h2, h3, p e também pode incluir imagens (tipo "<img src"). Clicar novamente na mesma pergunta ou em uma pergunta diferente "Explain Link" deve fechar aquele DIV ou SPAN aberto.

Foi isso que eu tentei:

Javascript:

<script>
    $(function () {
        $('#button-1').click(function(){
            $('#popup-1').animate({height:'500px'}, 500);
        });
    });
</script>

HTML:

<tr><td>Q.2<td>C<td>C<td>&#9989;<td><a href='#' id="button-1">Explain</a><span id='popup-1'>Explanation of answer<br>Goes<br>here<br>including images: <img src='img-explain-q2.jpg'></img></span>

CSS:

#popup-1{
    height: 0px;
    width: 100%;
    float: right;
    overflow: hidden;
    background: #efefef;
}

Alguma informação sobre o que está errado e como corrigi-lo?

javascript
  • 2 2 respostas
  • 94 Views

2 respostas

  • Voted
  1. Best Answer
    Erfan Ta
    2025-02-18T16:44:07+08:002025-02-18T16:44:07+08:00

    se você quiser fazer isso sem JS, é mais fácil usar <details> a solução HTML mais simples e semântica: usar o <details>elemento .

    como abaixo você também pode estilizar isto:

    summary::marker {
      content: " ";
    }
    
    summary {
      color:blue;
      cursor:pointer;
      text-decoration:underline;
    }
    <details>
      <summary>Explain</summary>
      <!-- add what you need  -->
      <h2>hello world</h2>
      <p>explain what you want</p>
      <!-- add what you need  -->
    </details>

    • 9
  2. Daksh Rawal
    2025-02-18T15:58:21+08:002025-02-18T15:58:21+08:00

    adicione / faça alterações no arquivo css conforme mencionado abaixo

    a {
        margin-right: 1rem;
    }
    .explain {
        display: none;
    }
    .dets {
         display: flex;
    }
    

    adicione a função javascript abaixo ao seu arquivo de scripts

    
    function show(e) {
        var prev = e.parentNode.children[1].style.display;
        $(".explain").css("display", "none");
        $(".explain").css("height", "0px");
        if (prev != "block") {
            e.parentNode.children[1].style.display = "block";
            e.parentNode.children[1].animate({ height: '500px' }, 500,);
            setTimeout(function () {
                e.parentNode.children[1].style.height = "500px";
            },499);
        }
    }
    

    envolva o <a>and <span>em uma div, faça as seguintes alterações na <a>tag e adicione também a classe explainao span

    <div class="dets">
        <a href="javascript:void(0)" onclick="show(this)">Explain</a>
        <span id='popup-1' class="explain">Explanation of answer<br>Goes<br>here<br>including images: <img src='img-explain-q2.jpg'></img></span>
    </div>
    

    ao fazer as mudanças acima você alcançará o que deseja,

    então, basicamente, a ideia por trás disso é que você terá um div pai chamado DETS que conterá a <a>tag e a <span>exibição deste div é definida como flex, leia mais sobre os tipos de exibição , ele é definido como flexível, pois você deseja exibi-lo no lado direito do botão de explicação

    adicionado href="javascript:void(0)" onclick="show(this)"à <a>tag , o que basicamente significa que evita o comportamento padrão de recarregar ou abrir uma nova aba, e onclick chama uma função javascript,

    na função javascript, primeiro salvamos o estado atual do div/span de explicação, depois ocultamos e definimos a altura de todos os divs de explicação como zero, o que significa que cada explicação é ocultada, então verificamos o estado anterior do span de explicação atual, se já estava oculto ou não mostrado, então o exibimos, com uma animação de 500 ms de 0 a 500 px de altura

    setTimeout(function () {
        e.parentNode.children[1].style.height = "500px";
    },499);
    

    isso é usado para fixar a altura em 500px após um atraso

    confira abaixo

        function show(e) {
            var prev = e.parentNode.children[1].style.display;
            $(".explain").css("display", "none");
            $(".explain").css("height", "0px");
            if (prev != "block") {
                e.parentNode.children[1].style.display = "block";
                e.parentNode.children[1].animate({ height: '500px' }, 500,);
                setTimeout(function () {
                    e.parentNode.children[1].style.height = "500px";
                }, 499);
            }
        }
            a {
                margin-right: 1rem;
            }
            .explain {
                display: none;
            }
            .dets {
                display: flex;
            }
    <html>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <body>
    
        
        <table border="1">
            <tr>
                <th>Q</th>
                <th>YA</th>
                <th>CA</th>
                <th>RES</th>
                <th width="100%">DETAILS</th>
            </tr>
            <tr>
                <td>1</td>
                <td>x</td>
                <td>x</td>
                <td>YES</td>
                <td width="100%">
                    <div class="dets">
                        <a href="javascript:void(0)" onclick="show(this)">Explain</a>
                        <span id='popup-3' class="explain">Explanation of answer<br>Goes<br>here<br>including images: <img
                                src='img-explain-q2.jpg'></img></span>
                    </div>
                </td>
            </tr>
            <tr>
                <td>2</td>
                <td>y</td>
                <td>a</td>
                <td>NO</td>
                <td width="100%">
                    <div class="dets">
                        <a href="javascript:void(0)" onclick="show(this)">Explain</a>
                        <span id='popup-2' class="explain">Explanation of answer<br>Goes<br>here<br>including images: <img src='img-explain-q2.jpg'></img></span>
                    </div>
                </td>
            </tr>
        </table>
    </body>
    
    
    </html>

    para exibir a explicação abaixo do botão explicar

    mudar

    .dets {
         display: flex;
    }
    

    para

    .dets {
         display: block;
    }
    

    Espero que isso tenha ajudado você, se tiver alguma dúvida relacionada à resposta, fique à vontade para perguntar

    • 2

relate perguntas

  • classificação de mesclagem não está funcionando - código Javascript: não é possível encontrar o erro mesmo após a depuração

  • método select.remove() funciona estranho [fechado]

  • Sempre um 401 res em useOpenWeather () - react-open-weather lib [duplicado]

  • O elemento de entrada não possui atributo somente leitura, mas os campos ainda não podem ser editados [fechado]

  • Como editar o raio do primeiro nó de um RadialTree D3.js?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve