Ответ 1
Предполагая, что вы не используете jQuery или какую-либо другую библиотеку, которая упрощает вам эту задачу, вы можете просто использовать свойство innerHTML.
document.getElementById("content").innerHTML = "whatever";
У меня есть простой HTML-код с некоторым JavaScript, это выглядит так:
<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>
Предполагая, что вы не используете jQuery или какую-либо другую библиотеку, которая упрощает вам эту задачу, вы можете просто использовать свойство innerHTML.
document.getElementById("content").innerHTML = "whatever";
$('#content').html('whatever');
Получить идентификатор div
, содержимое которого вы хотите изменить, а затем назначить текст следующим образом:
var myDiv = document.getElementById("divId");
myDiv.innerHTML = "Content To Show";
Вы можете использовать следующую вспомогательную функцию:
function content(divSelector, value) {
document.querySelector(divSelector).innerHTML = value;
}
content('#content',"whatever");
Где #content
должен быть действительным селектором CSS
Вот рабочий пример.
Дополнительно - сегодня (2018.07.01) я провел сравнение скорости для решений jquery и pure js (MacOs High Sierra 10.13.3 на 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: 69% на Firefox, 61% на Safari, 56% на Chrome. Самым быстрым браузером для чистого js был firefox с 560M операций в секунду, вторым был safari 426M, а самым медленным был chrome 122M.
Так что победителями стали чистые js и firefox (в 3 раза быстрее, чем chrome!)
Вы можете проверить это на своем компьютере: 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.
Живой код
измените onClick на onClick="changeDivContent(this)"
и попробуйте
function changeDivContent(btn) {
content.innerHTML = btn.value
}
function changeDivContent(btn) {
content.innerHTML = btn.value
}
<input type="radio" name="radiobutton" value="A" onClick="changeDivContent(this)">
<input type="radio" name="radiobutton" value="B" onClick="changeDivContent(this)">
<div id="content"></div>