如何在没有 document.write 的 HTML 页面中显示 JavaScript 变量

IT技术 javascript jquery html
2021-01-25 06:21:06

我试图在我的 HTML 页面上显示一些 JavaScript 变量。

我是第一次使用,document.write()但它用于在调用该函数时覆盖当前页面。

在四处寻找之后,普遍的共识document.write()是不太喜欢。其他选项是什么?

我找到了一个建议使用.innerHTML但写于 2005 年的页面。

一个 jsFiddle 说明了我的问题http://jsfiddle.net/xHk5g/

6个回答

Element.innerHTML几乎是要走的路。以下是几种使用方法:

HTML

<div class="results"></div>

JavaScript

// 'Modern' browsers (IE8+, use CSS-style selectors)
document.querySelector('.results').innerHTML = 'Hello World!';

// Using the jQuery library
$('.results').html('Hello World!');

如果您只想更新 a 的一部分,<div>我通常只需添加一个空元素,其中包含一个类,value或者我想将其内容替换为 main <div>例如

<div class="content">Hello <span class='value'></span></div>

然后我会使用一些这样的代码:

// 'Modern' browsers (IE8+, use CSS-style selectors)
document.querySelector('.content .value').innerHTML = 'World!';

// Using the jQuery library
$(".content .value").html("World!");

然后 HTML/DOM 现在将包含:

<div class="content">Hello <span class='value'>World!</span></div>

完整的例子。单击运行代码段进行尝试。

// Plain Javascript Example
var $jsName = document.querySelector('.name');
var $jsValue = document.querySelector('.jsValue');

$jsName.addEventListener('input', function(event){
  $jsValue.innerHTML = $jsName.value;
}, false);


// JQuery example
var $jqName = $('.name');
var $jqValue = $('.jqValue');

$jqName.on('input', function(event){
  $jqValue.html($jqName.val());
});
html {
  font-family: sans-serif;
  font-size: 16px;
}

h1 {
  margin: 1em 0 0.25em 0;
}

input[type=text] {
  padding: 0.5em;
}

.jsValue, .jqValue {
  color: red;
}
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>Setting HTML content example</title>
</head>
<body>
  <!-- This <input> field is where I'm getting the name from -->
  <label>Enter your name: <input class="name" type="text" value="World"/></label>
  
  <!-- Plain Javascript Example -->
  <h1>Plain Javascript Example</h1>Hello <span class="jsValue">World</span>
  
  <!-- jQuery Example -->
  <h1>jQuery Example</h1>Hello <span class="jqValue">World</span>
</body>
</html>

@FelixKling:实际上不是。我的解决方案只是替换了 div 的文本部分。如果我想在我的解决方案中只在 FirstDiv 内显示值并且仍然希望 FirstDiv 保存第二个 div 元素,会发生什么?innerHtml 会只是替换 FirstDiv 中的值而不删除 SecondDiv 吗?我只是问
2021-03-15 06:21:06
@Ajai:您的解决方案也是如此。显然,人们会创建一个元素,其唯一目的是包含该值。
2021-03-17 06:21:06
jQuery 解决方案正在为我工​​作,在 div 中显示变量的内容。
2021-04-05 06:21:06
@JohnnyUtahh 查看我添加的代码段。有一个普通的 Javascript 和一个 jQuery 示例。
2021-04-09 06:21:06
是不是innerHtml 替换了html 元素中的整个html 部分而不仅仅是文本?我认为 OP 指的只是在页面上显示一些 JS 变量。
2021-04-11 06:21:06

您可以使用 javascript 访问页面上的元素并修改其内容。例如,您可能有一个带有一些 HTML 标记的页面,如下所示:

<div id="MyEdit">
    This text will change
</div>

您可以使用 javascript 来更改内容,如下所示...

document.getElementById("MyEdit").innerHTML = "My new text!";​

这是一个工作示例


您还可以查看使用JQuery javascript 库进行 DOM 操作,它具有一些很棒的功能,可以使此类操作变得非常简单。

例如,使用 JQuery,您可以这样做以获得相同的结果......

$("#MyEdit").html("My new text!");

这是 JQuery 版本的工作示例


基于您在帖子中提供的此示例以下 JQuery 对您有用:

var x = "hello wolrd";
$("p").html(x);

这是工作版本

P但是不推荐使用这样的标签。理想情况下,您希望使用具有唯一 ID 的元素,以便确保使用 JQuery 选择正确的元素。

@musefan 我在输入答案时几乎写了同样的东西!我不知道没有 jQuery 的人们如何生活 :P
2021-03-20 06:21:06
document.getElementById("MyEdit").innerHtml("My new text!"); 应该是 document.getElementById("MyEdit").innerHtml="My new text!";
2021-03-23 06:21:06
@AndyE:是的,我发现了……对我来说 JQuery 太多了;)
2021-04-06 06:21:06

有不同的方法可以做到这一点。一种方法是编写一个检索命令的脚本。像这样:

var name="kieran";
document.write=(name);

或者我们可以使用默认的 JavaScript 方式来打印它。

var name="kieran";
document.getElementById("output").innerHTML=name;

and the html code would be: 

<p id="output"></p>

我希望这有帮助:)

您可以使用 jquery 来获取要加载值的 html 元素。

例如,如果您的页面看起来像这样,

<div id="FirstDiv">
  <div id="SecondDiv">
     ...
  </div>
 </div>

如果你的 javascript(我希望)看起来像这样简单,

function somefunction(){
  var somevalue = "Data to be inserted";
  $("#SecondDiv").text(somevalue);
}

我希望这就是你要找的。

如果您想避免使用 innerHTML,您可以使用 DOM 方法来构造元素并将它们附加到页面中。

​var element = document.createElement('div');
var text = document.createTextNode('This is some text');
element.appendChild(text);
document.body.appendChild(element);​​​​​​
奇怪,这似乎是对 OP 问题最相关的答案。虽然它是 JAVASCRIPT 而不是 jQuery,但它可以是“可移植的”,避免在 html 中添加额外的容器。
2021-04-03 06:21:06