Javascript节点操作

17 篇文章 0 订阅
订阅专栏

节点操作是Javascript获取元素的方式之一。另一种是利用Javascript提供的DOM方法获取元素。常见的有getElementById,getElementsByTagName()等;

这种方法每获取一次元素就要getElement一次,较为繁琐(相对于节点操作而言)。我们可以使用节点操作,在获取某一个元素后,使用节点操作就可以直接获取它的子元素,子节点,兄弟节点等。

节点简介

节点在Javascript中包括文本节点,属性节点,元素节点,注释节点。节点具有节点类型(nodeType),节点值(nodeValue),节点名称(nodeName)。

节点类型 nodeType不同类型的节点具有不同的编号,如元素节点编号为1
节点名称 nodeName元素节点对应元素名,注释节点返回#comment,文本节点返回#text······
节点值 nodeValue仅限于文本,注释,XML的CDATA节点。其他节点的属性值为null,可读可写。

个人测试代码

<!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>测试</title>
  <style>
    #box{
      width: 100px;
      height: 100px;
      background-color: #ccc;
    }
  </style>
</head>
<body>
  <div id="box" title="这是一个div" class="BB">
    <!-- name -->
    里面不是空的
    <p>??</p>
  </div>
  <script>
    var box=document.getElementById("box");
    console.log(box.nodeName);//返回DIV
    console.log(box.childNodes[1].nodeName);//返回#comment
    console.log(box.childNodes[0].nodeName);//返回#text
    console.log(box.nodeType);//元素节点nodeType是1
    // console.log(box.attributes);//节点的所有属性节点作为一个数组保存在元素的attributes中
    // 属性例如title="",class=""写在html标签内部
    console.log(box.attributes[0].nodeType)//属性节点的nodeType为2
    console.log(box.childNodes[0].nodeType);//文本节点的nodeType是3
    console.log(box.childNodes[1].nodeType);//这里对应的是注释节点,nodeType对应8
    //box.nodeValue=1222//为元素节点设置nodeValue会失败
    //nodeValue属性只有文本节点,注释节点,XML的CDATA节点才具有,其他节点的nodeValue均为null
    box.childNodes[1].nodeValue="name 已经过修改";
    console.log(box.childNodes[1].nodeValue);//这里获取的是注释节点的nodeValue
  </script>
</body>
</html>

nodeType各种节点对应值-以下图片摘自MDN 。个人感觉实际记忆价值不大,需要时能够查到即可。

节点操作实际属性和方法

属性

  • Node.firstChild 返回当前节点的第一个子节点,没有就返回null。
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        console.log(box.firstChild);
      </script>
    </body>

    输出结果为取值为换行和空格的文本节点。

  • Node.lastChild 返回当前节点的最后一个子节点,没有返回null。
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        console.log(box.lastChild);
      </script>
    </body>

    输出结果同样为值为换行和空格的文本节点。

  • 以上两个方法由于可能获取到文本节点,常常使用firstElementNode lastElementNode这两个属性来获取第一个或最后一个元素节点。

    <body>
      <ul id="uu">
        <li>11</li>
        <li>22</li>
        <li>33</li>
      </ul>
      <script>
        var ul=document.getElementById("uu");
        console.log(ul.firstElementChild);
        console.log(ul.lastElementChild);
      </script>
    </body>

    输出结果就是第一个和最后一个li。

  • Node.childNodes 返回一个具有当前节点的全部子节点的类数组,类数组没有push,pop等数组方法,但具有length属性。返回值是实时更新的,随着节点修改而改变。
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        console.log(box.childNodes);
      </script>
    </body>

    输出结果为类数组

  • Node.children 类似于childNodes,但是只是针对元素节点。

    <body>
      <div id="box" title="这是一个div" class="BB">
        <p>??</p>
        <span>11</span>
      </div>
      <script>
        var box=document.getElementById("box");
        console.log(box.children);
      </script>
    </body>

     以上为输出结果。

  • Node.nodeValue 返回当前节点的节点值,可读可写。当对这个属性赋值时就可以修改属性值。
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        console.log(pss.firstChild.nodeValue);
      </script>
    </body>

    输出结果为??,也可以对这个属性进行修改,赋值字符串即可,此处不再展示。

  • Node.nextSibling 返回当前节点的下一个兄弟节点。不可修改(可读不可写)
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        console.log(pss.nextSibling);
      </script>
    </body>

    输出的是值为换行和空格的文本节点。

  • Node.previousSibling 返回当前节点的上一个兄弟节点。可读不可写。
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        console.log(pss.previousSibling);
      </script>
    </body>

    输出内容

  • 以上两个属性针对元素还有nextElementSibling,previousElementSibling。效果也是针对元素,避免获取文本节点,注释节点等其他节点。

    <body>
      <ul id="uu">
        <li>11</li>
        <li>22</li>
        <li>33</li>
      </ul>
      <script>
        var ul=document.getElementById("uu");
        console.log(ul.children[1].nextElementSibling);
        console.log(ul.children[1].previousElementSibling);
      </script>
    </body>

    输出结果分别是第三个节点,第一个节点。

  • Node.parentNode 返回当前节点的父节点,没有则返回null。
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        console.log(pss.parentNode);
      </script>
    </body>

    输出内容为div元素。

  • Node.parentElement 返回当前节点的父元素,没有则返回null。相对于上一个方法,更针对于获取元素,避免了父节点为非元素节点的可能。
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        console.log(pss.parentNode);
      </script>
    </body>

    输出内容也是div元素

  • Node.textContent 返回当前节点的内部可视文本。不包括注释,display为none的元素内部文本,包括换行空格。(若想针对这个属性深入思考可以看本人的 另一篇博文)
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        console.log(box.textContent);
      </script>
    </body>
    输出内容

 方法

  • Node.appendChild() 将参数指定的节点添加到当前节点的子节点,成为最后一个子节点。
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <ul id="ul"></ul>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        var ul=document.getElementById("ul");
        box.appendChild(ul);
      </script>
    </body>

    修改后页面结构变为:

  • Node.cloneNode() 参数是一个布尔值。为真,克隆内容包含当前节点的全部子代节点。为假时只是当前节点内容,不包括子代。这个方法会返回一个克隆节点,一般需要赋值到其他变量上来保存克隆出来的变量。
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <ul id="ul"></ul>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        var ul=document.getElementById("ul");
        var box_copy=box.cloneNode(true);
        console.log(box_copy);
      </script>
    </body>

    输出的这个box_cpoy不在页面中,属于一个DOM外的节点。参数为真,复制的内容包括子节点及其内容。参数为假时复制不包括子节点。

  • Node.contains() 参数是一个节点,作用是判定当前节点是否包含参数节点。包含则返回true,反之返回false。这里的包含关系可以是子代的子代······,仍会返回true。
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <ul id="ul"></ul>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        var ul=document.getElementById("ul");
        console.log(box.contains(pss));
      </script>
    </body>

    输出为true

  • Node.hasChildNode() 无参数。作用是判定当前节点的子节点中是否含有子节点。返回值为布尔值。当然也可以使用node.firstNode!=null判断,node.childNodes.length!=0
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <ul id="ul"></ul>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        var ul=document.getElementById("ul");
        console.log(ul.hasChildNodes());
      </script>
    </body>

    输出为false

  • Node.insertBefore() 第一个参数是需要移动位置的节点,第二个参数是作为相对位置的节点,第一个参数节点会插入到第二个参数节点前。如果第一个参数节点已经出现在html文档中,这个方法就会移动该节点到新位置并删除原位置的节点。
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <ul id="ul"></ul>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        var ul=document.getElementById("ul");
        box.insertBefore(box.childNodes[3],box.childNodes[0]);
      </script>
    </body>

    修改后网页结构

  • document.creatElement() 参数为一个表示标签名的字符串。返回值就是新创建的元素。这个方法创建元素后不会直接放到页面中,而是需要使用appendChild操作把元素放到页面中。

  • Node.isEqualNode() 比较当前节点和参数节点是否是同一节点,比较范围包括属性和属性值,节点类型,节点值。相同返回true,反之返回false。
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <ul id="ul"></ul>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        var ul=document.getElementById("ul");
        console.log(box.childNodes[3].isEqualNode(pss));
      </script>
    </body>

    这里以两种方式访问同一节点,输出为true。

  • Node.replaceChild() 第一个参数是新节点,第二个参数是被替换的节点。新节点如果已经出现在html文档中,原本位置的就会被删除。
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <ul id="ul">  </ul>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        var ul=document.getElementById("ul");
        ul.replaceChild(pss,ul.firstChild);
      </script>
    </body>

     以上为修改后的网页结构。

  • Node.removeNode() 参数是需要删除的子节点。该方法会返回被删除的节点。可以使用变量保存被删除节点(如果需要的话)。
    <body>
      <div id="box" title="这是一个div" class="BB">
        <!-- name -->
        里面不&nbsp; &nbsp;是空的
        <p>??</p>
      </div>
      <ul id="ul">  </ul>
      <script>
        var box=document.getElementById("box");
        var pss=document.getElementsByTagName("p")[0];
        var ul=document.getElementById("ul");
        ul.removeChild(ul.firstChild);
      </script>
    </body>

    以上为修改后网页结构。删除了ul中的文本节点

  • Node.normalize()  无参数,作用是规范化当前节点以及后代节点。会删去空文本节点,以及一些连续的文本节点。
    <body>
      <div id="box" title="这是一个div" class="BB"></div>
      <script>
        var box=document.getElementById("box");
        box.appendChild(document.createTextNode("1"));
        box.appendChild(document.createTextNode("2"));
        //初始化前
        console.log(box.childNodes.length);//只有新增的两个节点
        box.normalize();
        //初始化后
        console.log(box.childNodes.length);//只有一个节点
      </script>
    </body>
  • Node.getRootNode() 参数是一个布尔值。这个方法的作用返回是DOM树的根节点,即为HTMLDocument。参数默认为假,检索到shadow root就返回,为真则检索到普通root。(这玩意对笔者来说是没见过的新概念,有兴趣可以在 MDN上找到相关资料)
  • Node.compareDocumentPosition()(非重点)参数是另一个节点。作用是比较当前节点与另一节点的位置关系,返回值是一个十进制数值,不同数字代表不同含义。本人测试代码如下

    console.log(box.compareDocumentPosition(box));//0 两者一致
    console.log(box.compareDocumentPosition(box.previousSibling));//2 当前节点在另一个节点后面
    console.log(box.compareDocumentPosition(box.nextSibling));//4 当前节点在另一个节点前面
    console.log(box.compareDocumentPosition(box.parentNode));//10 当前节点是另一个节点的子节点
    console.log(box.compareDocumentPosition(box.firstChild));//20 当前节点是另一个节点的父节点

    这里值得一提的是本人查阅 MDN得到的结果与自行测试的结果不同,如有兴趣并懂得原因还请不吝赐教。

  • 部分涉及命名空间的部分方法因笔者尚未进行命名空间的学习,不再展开赘述。以下逐一列出,大家可以自行参考学习。 Node.lookupNamespaceURI(), Node.lookupPrefix(), Node.isDefaultNamespace()

以上就是本次节点操作的相关知识点分享,本文参考MDN官方文档,这时并没有涉及废弃的方法。大家如由兴趣也可以在 这里查看MDN的相关资料。本文如有不足或错误之处,欢迎指正。

JS 节点操作
weixin_43850458的博客
05-11 667
前端节点操作常用方法
JavaScript获取节点的方法大全
热门推荐
qq_42889406的博客
10-26 1万+
1. 通过document节点获取 1.1 通过ID 语法:document.getElementById(“id”); 特点: 应用场景: 推荐指数: 示例: 1.2 通过标签名 语法:document.getElementById(“id”); 特点: 应用场景: 示例: 1.3 通过name值 语法:document.getElementById(“id”); 特点: 应用场景: 示例: 1.4 通过class 语法:document.getElementById(“id”); 特点: 应用场景: 示
JavaScript 访问节点
路虽远,行则必至!
07-02 756
通过节点之间的树形关系,我们可以定位文档中每个节点。DOM 为 Node 类型定义如下属性,以方便 JavaScript 对文档树中每个节点进行遍历。 ownerDocument:返回当前节点的根元素(document 对象) parentNode:返回当前节点的父节点。所有的节点都仅有一个父节点 childNodes:返回当前节点的所有子节点节点列表 firstChild:返回当前节点的首...
Javascript节点
mengfanshaoxia的博客
02-16 1596
目录 Javascript节点 一、节点概述 二、节点属性 三、获取节点 3.1、获取父节点parentNode 3.2、获取子节点 3.2.1、所有子节点childNodes 3.2.2、子元素节点children 3.2.3、第一个节点firstChild 3.2.4、最后一个节点lastChild 3.3、获取兄弟节点 四、节点操作 4.1、创建节点 4.2、添加节点 4.3、复制节点 4.4、删除节点 4.5、修改节点 五、下拉菜单案例 六、动态生成表格案例 .
JavaScript访问元素节点的方法
CSPsy的博客
01-30 1976
JS访问元素节点的方法1. document.getElementById()2. document.getElementsByTagName()3. document.getElementsByClassName()4. document.querySelector()5. document.querySelectorAll() 访问元素节点主要依靠document对象 document对象:可以理解为整个 HTML 文档,它是 DOM 节点树的根 接下来,让我们来了解一下 JS 常用的访问元素
javascript节点操作
08-25
1Attributes 存储节点的属性列表(只读) 2childNodes 存储节点的子节点列表(只读)
JavaScript 节点操作 以及DOMDocument属性和方法
10-30
JavaScript中的节点操作和DOMDocument对象是Web开发中的基础概念,它们是处理和操作HTML或XML文档的核心工具。DOM(文档对象模型)是一种标准,它允许程序和脚本动态更新、添加、删除和改变任何HTML或XML文档的结构...
javaScript节点操作
06-26
javaScript节点操作.txt 没分了 给点分吧~~~~~~
JavaScript操作DOM节点
最新发布
05-22
JavaScript操作DOM节点,通过动态JS创建元素标签,自定义元素的个数,并显示序号和对应的正则表达式验证和图片类型大小验证,,在前端用户姓名和性别多选框的取值已拿到,最后把后面的if else代码放开就可以了,...
JavaScript节点及列表操作实例小结
10-23
主要介绍了JavaScript节点及列表操作的方法,以实例的形式较为详细的总结了javascript针对节点操作的相关技巧,并给出了一个完整的节点操作方法实例总结,需要的朋友可以参考下
JavaScript中访问节点对象的方法有哪些如何使用
10-26
js访问节点对象的方法有很多,比如getElementById在本文将举例为大家介绍下
数据结构--知识点16--搜索算法(二叉树)
ANingL的博客
09-06 2921
文章目录一、树的概念1、特点2、树的术语3、树的种类4、树的存储与表示5、常见的树的应用场景二、二叉树1、概念2、性质 一、树的概念 树是一种抽象数据类型(ADT)或是视作这种抽象数据类型的数据结构 1、特点 每个节点有零个或多个子节点 没有父节点节点称为根节点 每一个非根节点有且只有一个父节点 除了根节点外,每个子节点可以分为**多个不相交(因为都只有一个父节点)**的子树 2、树的术语 节点的度:一个节点含有的子树的个数称为该节点的度 树的度:一棵树中,最大的节点的度称为树的度 叶节点或终端节点
利用javascript操作页面节点
cxc3980的专栏
04-03 3083
1.访问节点:    a:getElementsByTagName():用于返回一个包含所有tanName(标签名)特性等于某个特定值的NodeList       如:var tagP=document.getElementsByTagName("p");              var tagImg=document.getElementsByTagName("img") 
JavaScript获取节点类型、节点名称和节点
xyjikl
12-09 5491
DOM节点信息包括节点类型(nodeType)、节点名称(nodeName)和节点值(nodeValue)。 节点类型 DOM节点中,每个节点都拥有不同的类型。 W3C规范中常用的 DOM节点类型有以下几种: 节点类型 说明 值 元素节点 每一个HTML标签都是一个元素节点,如 、 、等 1 属性节点 元素节点(HTML标签)
JAVASCRIPT访问节点
天地会
11-29 768
 HTML DOM (Document Object Model文档对象模型) DOM是一种与浏览器,平台,语言的接口,使得你可以访问页面其他的标准组件. DOM是以层次结构组织的节点或信息片断的集合.通过使用 getElementById() 和 getElementsByTagName() 方法 通过使用一个元素节点的 parentNode、firstChild 以及 lastCh
JS--JavaScript访问节点(childNodes、parentNode、firstChild、lastChild、nextSibling、previousSibling)
吴声子夜歌的博客
09-25 2942
访问节点 通过节点之间的树形关系,可以定位文档中的每个节点。DOM为Node类型定义如下属性,以方便JavaScript对文档树中每个节点进行遍历。 ownerDocument:返回当前节点的根元素(document对象) parentNode:返回当前节点的父节点。所有的节点都仅有一个父节点 childNodes:返回当前节点的所有子节点节点列表 firstChild:返回当前节点的首个子节...
js的DOM节点访问与操作
heye13的专栏
12-31 1143
js DOM节点访问 DOM操作
JS节点操作
Revin的博客
01-13 1790
节点概述 1.在JS中节点可分为父节点、子节点、兄弟节点。 又可分为元素节点、属性节点、文本节点 2.节点至少拥有三个基本属性,nodeType(节点类型)、nodeName(节点名称)、nodeValue(节点值) 元素节点节点类型为1 (在对节点进行操作时,通常对元素节点进行操作) 属性节点节点类型为2 文本节点节点类型为3 节点操作节点操作 以往获取节点只能通过一次一次的输入,利用节点进行操作可以一步获取。获取方法为node.parentNode 具体例子如下 <body>
JavaScript学习之访问所需节点
swing的专栏
08-02 531
DOM节点(元素节点、文本节点、属性节点) 元素节点:可以理解为标签元素,如head/title/body/h1/p 特殊的,还有根结点document 文本节点:可以理解为 属性节点:描述元素节点的信息、属性的节点;依附于元素节点   通过id属性查找元素 getElementById() 如: function testGetElement(id) {    v

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • CSS实现三角形(详细) 26187
  • CSS实现盒子居中 2957
  • CSS消除底部白边。 2102
  • JavaScript排他思想 2098
  • JavaScript脚本化CSS 1451

分类专栏

  • javascript学习笔记 17篇
  • 页面实现效果 1篇
  • 寒假刷题 20篇
  • CSS 1篇
  • 笔记 4篇

最新评论

  • JavaScript操作元素属性方式的辨析

    march on_6: 小马努力做时更博主表情包

  • JavaScript正则表达式

    lucky_starr: 支持大佬表情包

  • 寒假刷刷算法题(4)

    lucky_starr: 666大佬表情包

  • CSS静态布局——常规流,定位,浮动。

    lucky_starr: 表情包

  • CSS实现三角形(详细)

    lucky_starr: 马哥 牛表情包

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • JavaScript事件委托(代理)
  • JavaScript事件对象
  • JavaScriptDOM事件流
2022年39篇
2021年8篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司木棉湾百度竞价包年推广广州网页设计同乐网络广告推广坪地百度关键词包年推广南山如何制作网站宝安关键词排名西乡网站制作设计龙华网站优化软件荷坳网站搜索优化惠州优化双龙网站推广平湖百姓网标王西乡网站优化爱联网站优化推广光明建网站龙华企业网站设计大芬优化松岗网站搜索优化平湖营销型网站建设木棉湾如何制作网站坂田网站搜索优化沙井网页设计沙井网站定制福田优秀网站设计爱联英文网站建设福田外贸网站设计大运品牌网站设计龙岗网站优化推广民治网站推广系统爱联模板网站建设歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化