HTML / Javascript div içeriğini değiştir


208

Bazı javascript ile basit HTML kodu var, gibi görünüyor:

<html>

<head>
  <script type="text/javascript">
    function changeDivContent() { // ...
    };
  </script>
</head>

<body>

  <input type="radio" name="radiobutton" value="A" onClick="changeDivContent()">
  <input type="radio" name="radiobutton" value="B" onClick="changeDivContent()">

  <div id="content"></div>

</body>

</html>

Ben sadece "A" veya "B" radyo düğmelerinden birini seçerek div içeriğini (iç html) değiştirmek istedim, ama div # içerik javascript özniteliği "değer" yok, bu yüzden nasıl olabilir soruyorum yapıldı.

Yanıtlar:


418

Bu tür şeyleri sizin için kolaylaştıran jQuery veya başka bir kütüphane kullanmadığınızı varsayarsak, öğenin innerHTML özelliğini kullanabilirsiniz.

document.getElementById("content").innerHTML = "whatever";

6
Bir yan notta, document.getElementById("content").innerText = "<b>bold text?</b>";farklı davranacak ve bazen oldukça yararlı olacakdocument.getElementById("content").innerHTML = "<b>bold text?</b>";
Isaac

24
Kullanın innerHTMLziyade innerTextve textContentçünkü innerHTMLtüm tarayıcılara uyumludur.
Minh Triet

10
Uyarı! innerHTMLdeğeri güvenilir olmayan bir girdiden geldiğinde , kullanımı XSS güvenlik açıklarına neden olabilir. Kullanımı innerTexther zaman güvenlik nedeniyle tavsiye edilir ve şu anda tüm tarayıcılar (tarafından desteklenen caniuse.com/#feat=innertext )
Mirko Conti

innerHTML aracılığıyla, document.getElementById ("foo") gibi başka bir div öğesi atayabilir miyim. innerHTML = <div> ... </div>
Fayaz

24
$('#content').html('whatever');

Bunun için teşekkürler replace_html kullanmaya çalışıyordu ama bu sorunumu düzeltmek gibi görünüyordu. Neden olduğu hakkında bir fikrin var mı?
Uzun Paul

Bu jQuery çözümüdür.
Ivo

14

divİçeriğini değiştirmek istediğiniz kimliğini alın ve metni aşağıdaki gibi atayın:

  var myDiv = document.getElementById("divId");
  myDiv.innerHTML = "Content To Show";

2
Stackoverflow'a hoş geldiniz! Cevabınıza kod yazarken biraz açıklama yapmak sadece koddan çok daha yararlıdır.
George Netu

10

aşağıdaki yardımcı işlevi kullanabilirsiniz:

function content(divSelector, value) {
    document.querySelector(divSelector).innerHTML = value;
}

content('#content',"whatever");

#contentGeçerli CSS seçici nerede olmalıdır?

İşte çalışan örnek .


Ayrıca - bugün (2018.07.01) Jquery ve saf js çözümleri (Chrome 67.0.3396.99 (64 bit) üzerinde MacOs High Sierra 10.13.3, Safari 11.0.3 (13604.5.6), Firefox 59.0.2 için hız karşılaştırması yaptım (64 bit)):

document.getElementById("content").innerHTML = "whatever"; // pure JS
$('#content').html('whatever');                            // jQuery

resim açıklamasını buraya girin

Jquery çözümü saf js çözeltisinden daha yavaştı: firefox'ta% 69, safari'de% 61, kromda% 56. Saf js için en hızlı tarayıcı saniyede 560M işlemlerle firefox, ikincisi safari 426M ve en yavaş krom 122M idi.

Kazananlar saf js ve firefox (kromdan 3 kat daha hızlı!)

Makinenizde test edebilirsiniz: https://jsperf.com/js-jquery-html-content-change


2
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <input type="radio" name="radiobutton" value="A" onclick = "populateData(event)">
  <input type="radio" name="radiobutton" value="B" onclick = "populateData(event)">

    <div id="content"></div>
</body>
</html>

----------------- JS- kodu ------------

var targetDiv = document.getElementById('content');
    var htmlContent = '';

    function populateData(event){
      switch(event.target.value){
        case 'A':{
         htmlContent = 'Content for A';
          break;
        }
        case 'B':{
          htmlContent = "content for B";
break;
        }
      }
      targetDiv.innerHTML = htmlContent;
    }

Step1: on click of the radio button it calls function populate data, with event (an object that has event details such as name of the element, value etc..);

Step2: I extracted the value through event.target.value and then simple switch will give me freedom to add custom text.

Canlı Kod

https://jsbin.com/poreway/edit?html,js,output


0

üzerine tıklayın onClick="changeDivContent(this)"ve deneyin

function changeDivContent(btn) {
  content.innerHTML = btn.value
}

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.