HTML/Javascript 更改 div 内容

IT技术 javascript html
2021-01-22 18:45:03

我有一些带有 javascript 的简单 HTML 代码,它看起来像:

<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>

我只是希望能够通过选择“A”或“B”单选按钮之一来更改 div 的内容(它是内部 html),但是 div#content 没有 javascript 属性“value”,所以我问它如何完成。

6个回答

假设您没有使用 jQuery 或其他使此类事情更容易的库,您可以只使用元素的 innerHTML 属性。

document.getElementById("content").innerHTML = "whatever";
在旁注中,document.getElementById("content").innerText = "<b>bold text?</b>";行为会有所不同,有时非常有用,以document.getElementById("content").innerHTML = "<b>bold text?</b>";
2021-03-15 18:45:03
请使用innerHTML而不是innerTexttextContent因为innerHTML兼容所有浏览器。
2021-03-17 18:45:03
我可以通过innerHTML分配其他div元素吗,比如document.getElementById("foo").innerHTML = <div>...</div>
2021-04-01 18:45:03
警告!innerHTML当值来自不受信任的输入时,使用很容易导致 XSS 漏洞。innerText出于安全原因,始终建议使用 ,并且目前所有浏览器都支持它 ( caniuse.com/#feat=innertext )
2021-04-10 18:45:03
$('#content').html('whatever');
这是 jQuery 解决方案。
2021-03-20 18:45:03
感谢您尝试使用 replace_html 但这似乎解决了我的问题。知道为什么吗?
2021-03-21 18:45:03

获取div您要更改其内容的 id,然后分配如下文本:

  var myDiv = document.getElementById("divId");
  myDiv.innerHTML = "Content To Show";
欢迎使用 Stackoverflow!在答案中编写代码时提供一点解释比仅提供代码更有帮助。
2021-03-23 18:45:03

您可以使用以下辅助功能:

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

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

哪里#content必须是有效的CSS 选择器

这是工作示例


另外 - 今天(2018.07.01)我对 jquery 和纯 js 解决方案(MacOs High Sierra 10.13.3 on Chrome 67.0.3396.99(64 位),Safari 11.0.3(13604.5.6),Firefox 59.0.2)进行了速度比较(64 位)):

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

在此处输入图片说明

jquery 解决方案比纯 js 解决方案慢:firefox 69%,safari 61%,chrome 56%。纯js浏览器最快的是firefox,每秒560M,第二是safari 426M,最慢的是chrome 122M。

所以赢家是纯js和firefox(比chrome快3倍!)

你可以在你的机器上测试一下:https : //jsperf.com/js-jquery-html-content-change

<!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- 代码------------

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.

实时代码

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