高级JSjsJavaScript入门教程

JavaScript 动态修改HTML CSS

2021-10-17  本文已影响0人  微语博客

通过DOM(Document Object Model)文档对象模型,JavaScript 可访问 HTML 文档的所有元素,并且动态的操作HTML。

查找HTML元素

如果我们需要通过JavaScript操作HTML元素,通常我们要先查找HTML元素。

var element = document.getElementById('myId');
var elements = document.getElementsByTagName('div');
var elements = document.getElementsByClassName('my-class');

动态改变HTML内容

HTML DOM允许我们动态的改变HTML,这也是我们使用DOM模型的原因之一。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="myId" onclick="changeHTML()">点我改变我的内容</div>
  <script>
    function changeHTML(){
      var el = document.getElementById('myId');
      el.innerHTML = '<h1>改变之后的内容</h1>';
    }
  </script>
</body>
</html>

相比innerHTML来说,innerText只是显示改变的内容,而不会解析语法。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="myId" onclick="changeText()">点我改变我的内容</div>
  <script>
    function changeText(){
      var el = document.getElementById('myId');
      el.innerText = '改变之后的内容';
    }
  </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .my-class{
      font-size: 32px;
      color: red;
    }
  </style>
</head>
<body>
  <div id="myId" onclick="changeAttr()">点我改变我的class属性</div>
  <script>
    function changeAttr(){
      var el = document.getElementById('myId');
      el.className = 'my-class';
      //el.className = 'my-class my-class2';//这里也可以添加多个已定义的类,注意不要被覆盖
    }
  </script>
</body>
</html>

为了添加多个类名,又不被覆盖,可以使用element.classList.add('class')的方法。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .my-class{
      font-size: 32px;
      color: red;
    }
    .my-class2{
      background: #f0f;
    }
  </style>
</head>
<body>
  <div id="myId" onclick="changeAttr()">点我改变我的class属性</div>
  <script>
    function changeAttr(){
      var el = document.getElementById('myId');
      el.classList.add('my-class');
      el.classList.add('my-class2');//追加类名不会被覆盖
    }
  </script>
</body>
</html>

动态改变CSS样式

除了可以操作HTML属性和内容,DOM也可以操作CSS样式。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="myId" onclick="changeStyle()">点我改变我的样式属性</div>
  <script>
    function changeStyle(){
      var el = document.getElementById('myId');
      el.style.color = 'red';
      el.style.fontSize = '36px';//使用驼峰属性名
      el.style['background-color'] = 'aqua';//使用[*-*]属性名
    }
  </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="myId" onclick="changeStyle()">点我改变我的style属性</div>
  <script>
    function changeStyle(){
      var el = document.getElementById('myId');
      el.setAttribute('style','color:red;font-size:36px');
    }
  </script>
</body>
</html>

这两种方法都会把原有的样式覆盖掉,推荐还是使用修改HTML class属性的方法间接修改样式好。

上一篇 下一篇

猜你喜欢

热点阅读