搜索
首页web前端html教程《Java Script DOM编程艺术》读书笔记--DOM_html/css_WEB-ITnose

1、文档:DOM中的“D”

"D"代表document(文档)

2、对象:DOM中的“O”

“O”代表object(对象) 对象的分类

  • 用户定义对象(user-defined object)
  • 内建对象(native object)
  • 宿主对象(host object)

window对象window对象对应着浏览器窗口本身,这个对象的属性和方法通常统称为BOM(浏览器对象模型)BOM提供了window.open和window.blur等方法。以至于被滥用于各种弹出窗口和下拉菜单

3、模型:DOM中的“M”

“M”代表“Model”(模型)DOM把一份文档表示为一棵树(数学意义上的概念)示例代码

<!DOCTYPE html><html lang="en">  <head>    <meta charset="utf-8" />    <title>Shoping List<title>  </head>  <body>     <h1 id="What-to-buy">What to buy</h1>     <p title="a gentle reminder">Don’t forget to buy this stuff.<p>     <ul id="purchases">        <li> A tin of beans<li>        <li class="sale">Cheese<li>        <li class="sale important">Milk<li>        </ul>    <body>  </html>代码中<html>相当于树根,即根元素。<head>和<body>属于下一个分支,位于同一层次且互不包含,属于兄弟关系。<head>元素有两个子元素<meta>和<title>(属于兄弟关系)<body>元素有三个子元素<p>、<h1 id="ul-这三个属于兄弟关系-ul-也是一个父元素-有三个子元素-他们都是-li-元素-pre-p-如果你能把一个文档的各种元素想象成一棵家谱树-我们就可以用同样的术语描述DOM-但我觉得称为-strong-节点树-strong-更准确-p-h-节点">、<ul>(这三个属于兄弟关系。<ul>也是一个父元素,有三个子元素,他们都是<li>元素。

如果你能把一个文档的各种元素想象成一棵家谱树,我们就可以用同样的术语描述DOM。但我觉得称为“节点树”更准确

4、节点

节点(node)属于网络术语,它表示网络中的一个连接点。一个网络就是由一些节点构成的集合。DOM也是同样的情况,文档是由节点构成的集合。

  • 元素节点
  • 文本节点
  • 属性节点

4、1元素节点

DOM的原子是元素节点(element node)诸如

之类的元素。标签的名字就是元素的名字。元素也可以包含其他的元素。没有被包含在其他元素的唯一元素是元素,它是我们的节点树的根元素。

4、2文本节点

在上述例子中,

元素包含着文本“don't forget to buy this stuff.”它就是一个文本节点(text node)。

4、3属性节点

属性节点是对元素做出更具体的描述。例如,几乎所有的元素都有一个title属性,我们可以利用这个属性对包含在元素里的东西做出准确的描述:

<p title="a gentle reminder">Don't forget to buy this stuff.<p>

在DOM中title="a gentle reminder"是一个属性节点(attribute node),在前面的例子中无序清单元素

    有个id属性。有些清单元素
  • 有class属性。

    三者之间的关系.png

    4、4 CSS

    类似javascript脚本,我们也可以将CSS样式嵌在文档

    部分(style>标签之间)。也可以放在另外的一个文件里。**在HTML文件中引用CSS文件的格式:
    <link type="text/css" href="file.css" rel="stylesheet">

    继承(inheritance)是CSS技术中的一项强大功能。1)、 class属性

    <p class="special">This pargraph has the special class<p><h2 id="So-dose-this-headline">So dose this headline</h2>

    在样式表里可以为上面的代码进行定义

    special{font-style: italic;}

    还可以这样定义

    h2.special{text-transform: uppercase;}

    2)、id属性id属性的用途是给网页里的某个元素加上一个独一无二的标识符:

    <ul id="purchases">

    样式表定义

    #purchases{border:1px solid white;background-color:#333;color:#ccc;padding:1em;}
    #purchases li{font-weight:bold;}

    4、5获取元素

    有3种DOM方法可获取元素节点,分别是通过元素ID、通过标签名和通过类名字来获取

    • getElementById
    • getElementsByTagName
    • getElementsByClassName

    1)getElementById

    此方法将返回一个与那个有着给定id属性值的元素节点对应的对象,在javascript里注意大小写。它是document对象特有的函数,在脚本代码里,函数名的后面必须跟有一对圆括号,这对圆括号包含这函数的参数。document.getElementById(id)在getElementById方法中只有一个参数:你想获得的那个元素的id属性的值,这个id属性必须放在单引号或双引号里。docment.getElementById("purchases")这个调用将返回一个对象,这个对象对应着document对象里的一个独一无二的元素,那个元素的HTLM id属性值是purchases

              Shoping List<title>  </head>  <body>     <h1 id="What-to-buy">What to buy</h1>     <p title="a gentle reminder">Don’t forget to buy this stuff.<p>     <ul id="purchases">        <li> A tin of beans<li>        <li class="sale">Cheese<li>        <li class="sale important">Milk<li>        </ul>     <script>         alert(typeof docment.getElementById("purchases"));     </script>    <body>  </html>//利用`typeof`操作符进行验证(typeof操作符可以告诉我们它的操作数是一个字母、数值、函数、布尔值还是对象。</pre>   <p>验证可得是一个对象</p>   <h3 id="getElementsByTagName">2)getElementsByTagName</h3>   <p>getElementsByTagName方法返回一个对象数组,每个对象分别对应着文档里有着给定标签的一个元素。它的参数是标签的名字:decument.getElementByTagName(tag)</p>   <pre class='brush:php;toolbar:false;'>alert(document.getElementsByTagName("li").length);//显示文档里的列表元素个数为:3</pre>   <pre class='brush:php;toolbar:false;'><!DOCTYPE html><html lang="en">  <head>    <meta charset="utf-8" />    <title>Shoping List<title>  </head>  <body>     <h1 id="What-to-buy">What to buy</h1>     <p title="a gentle reminder">Don’t forget to buy this stuff.<p>     <ul id="purchases">        <li> A tin of beans<li>        <li class="sale">Cheese<li>        <li class="sale important">Milk<li>        </ul>     <script>         var items=document.getElementByTagName("li");         for (var i=0; i<items.length;i++){         alert(typeof items[i]);         }     </script>    <body>  </html>//代码运行结果显示三个alert对话框,显示的消息都是“object”。</pre>   <p>getElementsByTagName允许把一个通配符作为它的参数,通配符(*)必须放在引号里</p>   <pre class='brush:php;toolbar:false;'>alert(document.getElementsByTagName("*").length);//可以知道文档里有多少个元素节点</pre>   <pre class='brush:php;toolbar:false;'>var shopping=document.getElementById("purchases");var items=shopping.getElementsByTagName("*");//程序运行结果,items数组将只包含id属性值是purshase的元素清单的元素</pre>   <h3 id="getElementByClassName">3)getElementByClassName</h3>   <p>这个方法让我们能够通过class属性中的类名来访问元素,getElementByClassName也只接受一个参数,就是类名:</p>   <pre class='brush:php;toolbar:false;'>getElementByClassName(class)</pre>   <p>这个方法的返回值也与getElementsByTagName类似,都是一个具有相同类名的元素的数组。</p>   <pre class='brush:php;toolbar:false;'>document.getElementsByClassName("sale")</pre>   <p>利用这种方法还可有查找那些带有多个类名的元素。多个类名之间用空格分开即可</p>   <pre class='brush:php;toolbar:false;'>alert(document.getElementsByClassName("important sale").length);//对话框显示1,表示只有一个元素匹配。类名的顺序不重要,就算元素还带有更多类名也没有关系。</pre>   <p>也可以和getElementById组合使用</p>   <pre class='brush:php;toolbar:false;'>     var shopping=document.getElementById("purchase");     var sales=shopping.getElementsByClassName("sale");sales数组中包含的就只是位于“purchases”列表中的带有“sale”类的元素。</pre>   <p>getElementByClassName方法非常有用,但只有较新的浏览器才支持它。所以,需要使用已有的DOM方法来实现自己的getElementsByClassName。</p>   <pre class='brush:php;toolbar:false;'>function getElementsByClassName(node,classname){if (node.getElementsByClassName){//使用现有的方法return node.getElementsByTagName("*");for (var i=0; i<elems.length;i++){  if(elems[i].ClassName.indexof(classname)!= -1){results[results.length]=elems[i];          }      }return results;    }}</pre>   <h4 id="获取和设置属性">5 获取和设置属性</h4>   <ul>       <li>
    <strong>getAttribute方法</strong>(获取元素的属性)</li>    <li>
    <strong>setAttribute方法</strong>(更改属性节点值)5、1getAttributegetAttribute是一个函数,它只有一个参数(你所要查询的属性的名称)</li>   </ul>   </li>
    </ul></div><div class="wzconShengming_sp"><div class="bzsmdiv_sp">声明</div><div>本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn</div></div></div><div class="phpgenera_Details_mainL4"><div class="phpmain1_2_top"><a href="javascript:void(0);" class="phpmain1_2_top_title">相关文章<img class="lazy"
                                data-src="/static/imghwm/index2_title2.png" src="/static/imghw/default1.png" alt="" /></a></div><div class="phpgenera_Details_mainL4_info"><div class="phphistorical_Version2_mids"><a href="https://m.php.cn/zh/faq/1796797816.html" title="HTML:结构,CSS:样式,JavaScript:行为" class="phphistorical_Version2_mids_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                data-src="https://img.php.cn/upload/article/001/253/068/174490615241003.jpg?x-oss-process=image/resize,p_40" alt="HTML:结构,CSS:样式,JavaScript:行为" src="/static/imghw/default1.png"  /></a><a href="https://m.php.cn/zh/faq/1796797816.html" title="HTML:结构,CSS:样式,JavaScript:行为" class="phphistorical_Version2_mids_title">HTML:结构,CSS:样式,JavaScript:行为</a><span class="Articlelist_txts_time">Apr 18, 2025 am	 12:09 AM</span><p class="Articlelist_txts_p">HTML、CSS和JavaScript在Web开发中的作用分别是:1.HTML定义网页结构,2.CSS控制网页样式,3.JavaScript添加动态行为。它们共同构建了现代网站的框架、美观和交互性。</p></div><div class="phphistorical_Version2_mids"><a href="https://m.php.cn/zh/faq/1796797300.html" title="HTML的未来:网络设计的发展和趋势" class="phphistorical_Version2_mids_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                data-src="https://img.php.cn/upload/article/001/253/068/174481993285664.jpg?x-oss-process=image/resize,p_40" alt="HTML的未来:网络设计的发展和趋势" src="/static/imghw/default1.png"  /></a><a href="https://m.php.cn/zh/faq/1796797300.html" title="HTML的未来:网络设计的发展和趋势" class="phphistorical_Version2_mids_title">HTML的未来:网络设计的发展和趋势</a><span class="Articlelist_txts_time">Apr 17, 2025 am	 12:12 AM</span><p class="Articlelist_txts_p">HTML的未来充满了无限可能。1)新功能和标准将包括更多的语义化标签和WebComponents的普及。2)网页设计趋势将继续向响应式和无障碍设计发展。3)性能优化将通过响应式图片加载和延迟加载技术提升用户体验。</p></div><div class="phphistorical_Version2_mids"><a href="https://m.php.cn/zh/faq/1796796827.html" title="HTML与CSS vs. JavaScript:比较概述" class="phphistorical_Version2_mids_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                data-src="https://img.php.cn/upload/article/001/253/068/174473305338023.jpg?x-oss-process=image/resize,p_40" alt="HTML与CSS vs. JavaScript:比较概述" src="/static/imghw/default1.png"  /></a><a href="https://m.php.cn/zh/faq/1796796827.html" title="HTML与CSS vs. JavaScript:比较概述" class="phphistorical_Version2_mids_title">HTML与CSS vs. JavaScript:比较概述</a><span class="Articlelist_txts_time">Apr 16, 2025 am	 12:04 AM</span><p class="Articlelist_txts_p">HTML、CSS和JavaScript在网页开发中的角色分别是:HTML负责内容结构,CSS负责样式,JavaScript负责动态行为。1.HTML通过标签定义网页结构和内容,确保语义化。2.CSS通过选择器和属性控制网页样式,使其美观易读。3.JavaScript通过脚本控制网页行为,实现动态和交互功能。</p></div><div class="phphistorical_Version2_mids"><a href="https://m.php.cn/zh/faq/1796796249.html" title="HTML:是编程语言还是其他?" class="phphistorical_Version2_mids_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                data-src="https://img.php.cn/upload/article/001/253/068/174464723172609.jpg?x-oss-process=image/resize,p_40" alt="HTML:是编程语言还是其他?" src="/static/imghw/default1.png"  /></a><a href="https://m.php.cn/zh/faq/1796796249.html" title="HTML:是编程语言还是其他?" class="phphistorical_Version2_mids_title">HTML:是编程语言还是其他?</a><span class="Articlelist_txts_time">Apr 15, 2025 am	 12:13 AM</span><p class="Articlelist_txts_p">HTMLISNOTAPROGRAMMENGUAGE; ITISAMARKUMARKUPLAGUAGE.1)htmlStructures andFormatSwebContentusingtags.2)itworkswithcsssforstylingandjavascript for Interactivity,增强WebevebDevelopment。</p></div><div class="phphistorical_Version2_mids"><a href="https://m.php.cn/zh/faq/1796795665.html" title="HTML:建立网页的结构" class="phphistorical_Version2_mids_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                data-src="https://img.php.cn/upload/article/001/253/068/174456085285529.jpg?x-oss-process=image/resize,p_40" alt="HTML:建立网页的结构" src="/static/imghw/default1.png"  /></a><a href="https://m.php.cn/zh/faq/1796795665.html" title="HTML:建立网页的结构" class="phphistorical_Version2_mids_title">HTML:建立网页的结构</a><span class="Articlelist_txts_time">Apr 14, 2025 am	 12:14 AM</span><p class="Articlelist_txts_p">HTML是构建网页结构的基石。1.HTML定义内容结构和语义,使用、、等标签。2.提供语义化标记,如、、等,提升SEO效果。3.通过标签实现用户交互,需注意表单验证。4.使用、等高级元素结合JavaScript实现动态效果。5.常见错误包括标签未闭合和属性值未加引号,需使用验证工具。6.优化策略包括减少HTTP请求、压缩HTML、使用语义化标签等。</p></div><div class="phphistorical_Version2_mids"><a href="https://m.php.cn/zh/faq/1796795191.html" title="从文本到网站:HTML的力量" class="phphistorical_Version2_mids_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                data-src="https://img.php.cn/upload/article/001/253/068/174447404295304.jpg?x-oss-process=image/resize,p_40" alt="从文本到网站:HTML的力量" src="/static/imghw/default1.png"  /></a><a href="https://m.php.cn/zh/faq/1796795191.html" title="从文本到网站:HTML的力量" class="phphistorical_Version2_mids_title">从文本到网站:HTML的力量</a><span class="Articlelist_txts_time">Apr 13, 2025 am	 12:07 AM</span><p class="Articlelist_txts_p">HTML是一种用于构建网页的语言,通过标签和属性定义网页结构和内容。1)HTML通过标签组织文档结构,如、。2)浏览器解析HTML构建DOM并渲染网页。3)HTML5的新特性如、、增强了多媒体功能。4)常见错误包括标签未闭合和属性值未加引号。5)优化建议包括使用语义化标签和减少文件大小。</p></div><div class="phphistorical_Version2_mids"><a href="https://m.php.cn/zh/faq/1796794693.html" title="了解HTML,CSS和JavaScript:初学者指南" class="phphistorical_Version2_mids_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                data-src="https://img.php.cn/upload/article/001/253/068/174438733162787.jpg?x-oss-process=image/resize,p_40" alt="了解HTML,CSS和JavaScript:初学者指南" src="/static/imghw/default1.png"  /></a><a href="https://m.php.cn/zh/faq/1796794693.html" title="了解HTML,CSS和JavaScript:初学者指南" class="phphistorical_Version2_mids_title">了解HTML,CSS和JavaScript:初学者指南</a><span class="Articlelist_txts_time">Apr 12, 2025 am	 12:02 AM</span><p class="Articlelist_txts_p">WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。</p></div><div class="phphistorical_Version2_mids"><a href="https://m.php.cn/zh/faq/1796794180.html" title="HTML的角色:构建Web内容" class="phphistorical_Version2_mids_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                data-src="https://img.php.cn/upload/article/001/253/068/174430155217186.jpg?x-oss-process=image/resize,p_40" alt="HTML的角色:构建Web内容" src="/static/imghw/default1.png"  /></a><a href="https://m.php.cn/zh/faq/1796794180.html" title="HTML的角色:构建Web内容" class="phphistorical_Version2_mids_title">HTML的角色:构建Web内容</a><span class="Articlelist_txts_time">Apr 11, 2025 am	 12:12 AM</span><p class="Articlelist_txts_p">HTML的作用是通过标签和属性定义网页的结构和内容。1.HTML通过到、等标签组织内容,使其易于阅读和理解。2.使用语义化标签如、等增强可访问性和SEO。3.优化HTML代码可以提高网页加载速度和用户体验。</p></div></div><a href="https://m.php.cn/zh/web-designer.html" class="phpgenera_Details_mainL4_botton"><span>See all articles</span><img class="lazy" data-src="/static/imghwm/down_right.png" src="/static/imghw/default1.png" alt="" /></a></div><ins class="adsbygoogle"
         style="display:block"
         data-ad-format="fluid"
         data-ad-layout-key="-6t+ed+2i-1n-4w"
         data-ad-client="ca-pub-5902227090019525"
         data-ad-slot="8966999616"></ins><script>     (adsbygoogle = window.adsbygoogle || []).push({});
    </script><div class="AI_ToolDetails_main4sR"><div class="phpgenera_Details_mainR3"><div class="phpmain1_4R_readrank"><div class="phpmain1_4R_readrank_top"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'"
                                onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                data-src="/static/imghwm/hottools2.png" src="/static/imghw/default1.png" alt="" /><h2>热AI工具</h2></div><div class="phpgenera_Details_mainR3_bottom"><div class="phpmain_tab2_mids_top"><a href="https://m.php.cn/zh/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_top_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'"
                                        onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                        data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411540686492.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undresser.AI Undress" /></a><div class="phpmain_tab2_mids_info"><a href="https://m.php.cn/zh/ai/undresserai-undress" title="Undresser.AI Undress"class="phpmain_tab2_mids_title"><h3>Undresser.AI Undress</h3></a><p>人工智能驱动的应用程序,用于创建逼真的裸体照片</p></div></div><div class="phpmain_tab2_mids_top"><a href="https://m.php.cn/zh/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_top_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'"
                                        onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                        data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411552797167.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Clothes Remover" /></a><div class="phpmain_tab2_mids_info"><a href="https://m.php.cn/zh/ai/ai-clothes-remover" title="AI Clothes Remover"class="phpmain_tab2_mids_title"><h3>AI Clothes Remover</h3></a><p>用于从照片中去除衣服的在线人工智能工具。</p></div></div><div class="phpmain_tab2_mids_top"><a href="https://m.php.cn/zh/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_top_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'"
                                        onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                        data-src="https://img.php.cn/upload/ai_manual/001/246/273/173410641626608.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undress AI Tool" /></a><div class="phpmain_tab2_mids_info"><a href="https://m.php.cn/zh/ai/undress-ai-tool" title="Undress AI Tool"class="phpmain_tab2_mids_title"><h3>Undress AI Tool</h3></a><p>免费脱衣服图片</p></div></div><div class="phpmain_tab2_mids_top"><a href="https://m.php.cn/zh/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_top_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'"
                                        onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                        data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411529149311.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Clothoff.io" /></a><div class="phpmain_tab2_mids_info"><a href="https://m.php.cn/zh/ai/clothoffio" title="Clothoff.io"class="phpmain_tab2_mids_title"><h3>Clothoff.io</h3></a><p>AI脱衣机</p></div></div><div class="phpmain_tab2_mids_top"><a href="https://m.php.cn/zh/ai/ai-hentai-generator" title="AI Hentai Generator" class="phpmain_tab2_mids_top_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'"
                                        onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                        data-src="https://img.php.cn/upload/ai_manual/001/246/273/173405034393877.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Hentai Generator" /></a><div class="phpmain_tab2_mids_info"><a href="https://m.php.cn/zh/ai/ai-hentai-generator" title="AI Hentai Generator"class="phpmain_tab2_mids_title"><h3>AI Hentai Generator</h3></a><p>免费生成ai无尽的。</p></div></div></div><div class="phpgenera_Details_mainR3_more"><a href="https://m.php.cn/zh/ai">显示更多</a></div></div></div><div class="phpgenera_Details_mainR4"><div class="phpmain1_4R_readrank"><div class="phpmain1_4R_readrank_top"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'"
                                onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                data-src="/static/imghwm/hotarticle2.png" src="/static/imghw/default1.png" alt="" /><h2>热门文章</h2></div><div class="phpgenera_Details_mainR4_bottom"><div class="phpgenera_Details_mainR4_bottoms"><a href="https://m.php.cn/zh/faq/1796780570.html" title="R.E.P.O.能量晶体解释及其做什么(黄色晶体)" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O.能量晶体解释及其做什么(黄色晶体)</a><div class="phpgenera_Details_mainR4_bottoms_info"><span>1 个月前</span><span>By尊渡假赌尊渡假赌尊渡假赌</span></div></div><div class="phpgenera_Details_mainR4_bottoms"><a href="https://m.php.cn/zh/faq/1796780641.html" title="R.E.P.O.最佳图形设置" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O.最佳图形设置</a><div class="phpgenera_Details_mainR4_bottoms_info"><span>1 个月前</span><span>By尊渡假赌尊渡假赌尊渡假赌</span></div></div><div class="phpgenera_Details_mainR4_bottoms"><a href="https://m.php.cn/zh/faq/1796785841.html" title="刺客信条阴影:贝壳谜语解决方案" class="phpgenera_Details_mainR4_bottom_title">刺客信条阴影:贝壳谜语解决方案</a><div class="phpgenera_Details_mainR4_bottoms_info"><span>3 周前</span><span>ByDDD</span></div></div><div class="phpgenera_Details_mainR4_bottoms"><a href="https://m.php.cn/zh/faq/1796789525.html" title="Windows 11 KB5054979中的新功能以及如何解决更新问题" class="phpgenera_Details_mainR4_bottom_title">Windows 11 KB5054979中的新功能以及如何解决更新问题</a><div class="phpgenera_Details_mainR4_bottoms_info"><span>2 周前</span><span>ByDDD</span></div></div><div class="phpgenera_Details_mainR4_bottoms"><a href="https://m.php.cn/zh/faq/1796780618.html" title="威尔R.E.P.O.有交叉游戏吗?" class="phpgenera_Details_mainR4_bottom_title">威尔R.E.P.O.有交叉游戏吗?</a><div class="phpgenera_Details_mainR4_bottoms_info"><span>1 个月前</span><span>By尊渡假赌尊渡假赌尊渡假赌</span></div></div></div><div class="phpgenera_Details_mainR3_more"><a href="https://m.php.cn/zh/article.html">显示更多</a></div></div></div><div class="phpgenera_Details_mainR3"><div class="phpmain1_4R_readrank"><div class="phpmain1_4R_readrank_top"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'"
                                onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                data-src="/static/imghwm/hottools2.png" src="/static/imghw/default1.png" alt="" /><h2>热工具</h2></div><div class="phpgenera_Details_mainR3_bottom"><div class="phpmain_tab2_mids_top"><a href="https://m.php.cn/zh/toolset/development-tools/1579" title="SecLists" class="phpmain_tab2_mids_top_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'"
                                            onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                            data-src="https://img.php.cn/upload/manual/000/000/008/169442209227215.jpg" src="/static/imghw/default1.png" alt="SecLists" /></a><div class="phpmain_tab2_mids_info"><a href="https://m.php.cn/zh/toolset/development-tools/1579" title="SecLists" class="phpmain_tab2_mids_title"><h3>SecLists</h3></a><p>SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。</p></div></div><div class="phpmain_tab2_mids_top"><a href="https://m.php.cn/zh/toolset/development-tools/93" title="SublimeText3汉化版" class="phpmain_tab2_mids_top_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'"
                                            onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                            data-src="https://img.php.cn/upload/manual/000/000/001/58ab97a3baad9677.jpg" src="/static/imghw/default1.png" alt="SublimeText3汉化版" /></a><div class="phpmain_tab2_mids_info"><a href="https://m.php.cn/zh/toolset/development-tools/93" title="SublimeText3汉化版" class="phpmain_tab2_mids_title"><h3>SublimeText3汉化版</h3></a><p>中文版,非常好用</p></div></div><div class="phpmain_tab2_mids_top"><a href="https://m.php.cn/zh/toolset/development-tools/121" title="禅工作室 13.0.1" class="phpmain_tab2_mids_top_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'"
                                            onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                            data-src="https://img.php.cn/upload/manual/000/000/001/58ab97ecd1ab2670.jpg" src="/static/imghw/default1.png" alt="禅工作室 13.0.1" /></a><div class="phpmain_tab2_mids_info"><a href="https://m.php.cn/zh/toolset/development-tools/121" title="禅工作室 13.0.1" class="phpmain_tab2_mids_title"><h3>禅工作室 13.0.1</h3></a><p>功能强大的PHP集成开发环境</p></div></div><div class="phpmain_tab2_mids_top"><a href="https://m.php.cn/zh/toolset/development-tools/660" title="Atom编辑器mac版下载" class="phpmain_tab2_mids_top_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'"
                                            onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                            data-src="https://img.php.cn/upload/manual/000/000/001/58ed8cfa94c1a582.jpg" src="/static/imghw/default1.png" alt="Atom编辑器mac版下载" /></a><div class="phpmain_tab2_mids_info"><a href="https://m.php.cn/zh/toolset/development-tools/660" title="Atom编辑器mac版下载" class="phpmain_tab2_mids_title"><h3>Atom编辑器mac版下载</h3></a><p>最流行的的开源编辑器</p></div></div><div class="phpmain_tab2_mids_top"><a href="https://m.php.cn/zh/toolset/development-tools/1544" title="MinGW - 适用于 Windows 的极简 GNU" class="phpmain_tab2_mids_top_img"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'"
                                            onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                            data-src="" src="/static/imghw/default1.png" alt="MinGW - 适用于 Windows 的极简 GNU" /></a><div class="phpmain_tab2_mids_info"><a href="https://m.php.cn/zh/toolset/development-tools/1544" title="MinGW - 适用于 Windows 的极简 GNU" class="phpmain_tab2_mids_title"><h3>MinGW - 适用于 Windows 的极简 GNU</h3></a><p>这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。</p></div></div></div><div class="phpgenera_Details_mainR3_more"><a href="https://m.php.cn/zh/ai">显示更多</a></div></div></div><div class="phpgenera_Details_mainR4"><div class="phpmain1_4R_readrank"><div class="phpmain1_4R_readrank_top"><img onerror="this.onerror=''; this.src='/static/imghwm/default1.png'"
                                onerror="this.onerror=''; this.src='/static/imghwm/default1.png'" class="lazy"
                                data-src="/static/imghwm/hotarticle2.png" src="/static/imghw/default1.png" alt="" /><h2>热门话题</h2></div><div class="phpgenera_Details_mainR4_bottom"><div class="phpgenera_Details_mainR4_bottoms"><a href="https://m.php.cn/zh/faq/gmailyxdlrkzn" title="gmail邮箱登陆入口在哪里"  class="phpgenera_Details_mainR4_bottom_title">gmail邮箱登陆入口在哪里</a><div class="phpgenera_Details_mainR4_bottoms_info"><div class="phpgenera_Details_mainR4_bottoms_infos"><img class="lazy" data-src="/static/imghwm/eyess.png" src="/static/imghw/default1.png"
                                            alt="" /><span>7554</span></div><div class="phpgenera_Details_mainR4_bottoms_infos"><img class="lazy" data-src="/static/imghwm/tiezi.png" src="/static/imghw/default1.png"
                                            alt="" /><span>15</span></div></div></div><div class="phpgenera_Details_mainR4_bottoms"><a href="https://m.php.cn/zh/faq/cakephp-tutor" title="CakePHP 教程"  class="phpgenera_Details_mainR4_bottom_title">CakePHP 教程</a><div class="phpgenera_Details_mainR4_bottoms_info"><div class="phpgenera_Details_mainR4_bottoms_infos"><img class="lazy" data-src="/static/imghwm/eyess.png" src="/static/imghw/default1.png"
                                            alt="" /><span>1382</span></div><div class="phpgenera_Details_mainR4_bottoms_infos"><img class="lazy" data-src="/static/imghwm/tiezi.png" src="/static/imghw/default1.png"
                                            alt="" /><span>52</span></div></div></div><div class="phpgenera_Details_mainR4_bottoms"><a href="https://m.php.cn/faq/steamdzhmcssmgs" title="steam的账户名称是什么格式"  class="phpgenera_Details_mainR4_bottom_title">steam的账户名称是什么格式</a><div class="phpgenera_Details_mainR4_bottoms_info"><div class="phpgenera_Details_mainR4_bottoms_infos"><img class="lazy" data-src="/static/imghwm/eyess.png" src="/static/imghw/default1.png"
                                            alt="" /><span>83</span></div><div class="phpgenera_Details_mainR4_bottoms_infos"><img class="lazy" data-src="/static/imghwm/tiezi.png" src="/static/imghw/default1.png"
                                            alt="" /><span>11</span></div></div></div><div class="phpgenera_Details_mainR4_bottoms"><a href="https://m.php.cn/zh/faq/winactivationkeyper" title="win11激活密钥永久"  class="phpgenera_Details_mainR4_bottom_title">win11激活密钥永久</a><div class="phpgenera_Details_mainR4_bottoms_info"><div class="phpgenera_Details_mainR4_bottoms_infos"><img class="lazy" data-src="/static/imghwm/eyess.png" src="/static/imghw/default1.png"
                                            alt="" /><span>59</span></div><div class="phpgenera_Details_mainR4_bottoms_infos"><img class="lazy" data-src="/static/imghwm/tiezi.png" src="/static/imghw/default1.png"
                                            alt="" /><span>19</span></div></div></div><div class="phpgenera_Details_mainR4_bottoms"><a href="https://m.php.cn/zh/faq/newyorktimesdailybrief" title="NYT连接提示和答案"  class="phpgenera_Details_mainR4_bottom_title">NYT连接提示和答案</a><div class="phpgenera_Details_mainR4_bottoms_info"><div class="phpgenera_Details_mainR4_bottoms_infos"><img class="lazy" data-src="/static/imghwm/eyess.png" src="/static/imghw/default1.png"
                                            alt="" /><span>22</span></div><div class="phpgenera_Details_mainR4_bottoms_infos"><img class="lazy" data-src="/static/imghwm/tiezi.png" src="/static/imghw/default1.png"
                                            alt="" /><span>96</span></div></div></div></div><div class="phpgenera_Details_mainR3_more"><a href="https://m.php.cn/zh/faq/zt">显示更多</a></div></div></div></div></main><ins class="adsbygoogle"
         style="display:block"
         data-ad-format="autorelaxed"
         data-ad-client="ca-pub-5902227090019525"
         data-ad-slot="5027754603"></ins><script>     (adsbygoogle = window.adsbygoogle || []).push({});
    </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>公益在线PHP培训,帮助PHP学习者快速成长!</p></div><div class="footermid"><a href="https://m.php.cn/zh/about/us.html">关于我们</a><a href="https://m.php.cn/zh/about/disclaimer.html">免责声明</a><a href="https://m.php.cn/zh/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p>                © php.cn All rights reserved
                </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>  var _paq = window._paq = window._paq || [];
      /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
      _paq.push(['trackPageView']);
      _paq.push(['enableLinkTracking']);
      (function() {
        var u="https://tongji.php.cn/";
        _paq.push(['setTrackerUrl', u+'matomo.php']);
        _paq.push(['setSiteId', '9']);
        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
      })();
    </script><script>        jQuery.fn.wait = function (func, times, interval) {
                var _times = times || -1, //100次
                _interval = interval || 20, //20毫秒每次
                _self = this,
                _selector = this.selector, //选择器
                _iIntervalID; //定时器id
                if( this.length ){ //如果已经获取到了,就直接执行函数
                    func && func.call(this);
                } else {
                    _iIntervalID = setInterval(function() {
                        if(!_times) { //是0就退出
                            clearInterval(_iIntervalID);
                        }
                        _times <= 0 || _times--; //如果是正数就 --
    
                        _self = $(_selector); //再次选择
                        if( _self.length ) { //判断是否取到
                            func && func.call(_self);
                            clearInterval(_iIntervalID);
                        }
                    }, _interval);
                }
                return this;
    }
    
        $("table.syntaxhighlighter").wait(function() {
            $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>");
        });
        $(document).on("click", ".cnblogs_code_footer",function(){
            $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide();
        });
        $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}});
        </script><script>// 通用函数,用于显示或隐藏元素
    function toggleElementsDisplay(className, show) {
      const elements = document.getElementsByClassName(className);
      for (let i = 0; i < elements.length; i++) {
        elements[i].style.display = show ? "block" : "none";
      }
    }
    // 页面加载完成后执行的主函数
    document.addEventListener("DOMContentLoaded", () => {
      // 1. 绑定菜单按钮事件
      const bindMenuEvents = () => {
        const toggleDisplay = (className, show, eventId) => {
          const element = document.getElementById(eventId);
          if (element) {
            element.addEventListener("click", (event) => {
              event.preventDefault();
              toggleElementsDisplay(className, show);
            });
          }
        };
        toggleDisplay("m_editormain12main", true, "fixed_tab_img");
        toggleDisplay("m_editormain12main", false, "fixed_tab_topi");
        toggleDisplay("m_editormain12main", false, "fixed_tab_close");
        toggleDisplay("m_menu", true, "lan1sp");
        toggleDisplay("m_menu", false, "m_editormain12main_topi_sp");
        toggleDisplay("m_menu_lang", true, "lan1");
        toggleDisplay("m_menu_lang", false, "m_editormain12main_topi_lan");
      };
     // 2. 绑定滚动链接事件
    const bindScrollLinks = () => {
      const titleList = document.getElementById("fixed_tab_titlelist");
      const menuMain = document.getElementsByClassName("m_editormain12main")[0];
      const links = document.querySelectorAll('.fixed_tab_a'); 
      links.forEach(linkElement => {
        if (linkElement) {
          linkElement.addEventListener("click", async (e) => {
            e.preventDefault();
            e.stopPropagation();
            // 先隐藏菜单
            if (menuMain) menuMain.style.display = "none";
            if (titleList) titleList.style.display = "none";
            // 获取目标元素的 ID
            const targetId = linkElement.getAttribute('href').substring(1);
            const targetElement = document.getElementById(targetId);
            // 等待 DOM 更新
            await new Promise(resolve => requestAnimationFrame(resolve));
            // 滚动到目标位置
            if (targetElement) {
              targetElement.scrollIntoView({
                behavior: "smooth",
                block: "start"
              });
            }
          });
        }
      });
    };
      // 3. 绑定关闭按钮事件
      const bindCloseButton = () => {
        const closeButton = document.querySelector(".phpgenera_Details_mainR1_close");
        const container = document.querySelector(".phpgenera_Details_mainR1");
        if (closeButton && container) {
          closeButton.addEventListener("click", (event) => {
            event.preventDefault();
            container.style.display = "none";
          });
        }
      };
      // 4. 初始化菜单交互功能
      const initMenuInteraction = () => {
        const menuGroupElements = document.querySelectorAll('.layui-menu-item-group');
        menuGroupElements.forEach(menuItem => {
          menuItem.addEventListener('click', function(event) {
            if (event.target.closest('.m_menusnames')) {
              return;
            }
            this.classList.toggle('layui-menu-item-down');
            this.classList.toggle('layui-menu-item-up');
            const subMenuContainer = this.querySelector('.m_menusnames');
            const icon = this.querySelector('.layui-icon');
            if (subMenuContainer && icon) {
              if (this.classList.contains('layui-menu-item-down')) {
                subMenuContainer.style.display = 'block';
                icon.classList.remove('layui-icon-down');
                icon.classList.add('layui-icon-up');
              } else {
                subMenuContainer.style.display = 'none';
                icon.classList.remove('layui-icon-up');
                icon.classList.add('layui-icon-down');
              }
            }
          });
        });
      };
      // 5. 初始化 layui 功能
      const initLayui = () => {
        if (typeof layui !== 'undefined') {
          layui.use(function () {
            var util = layui.util;
            if (util && util.fixbar) {
              util.fixbar({
                on: {
                  mouseenter: function (type) {
                    if (layer && layer.tips) {
                      layer.tips(type, this, {
                        tips: 4,
                        fixed: true,
                      });
                    }
                  },
                  mouseleave: function (type) {
                    if (layer && layer.closeAll) {
                      layer.closeAll("tips");
                    }
                  },
                },
              });
            }
          });
        }
      };
      // 执行所有初始化函数
      bindMenuEvents();
      bindScrollLinks();
      bindCloseButton();
      initMenuInteraction();
      initLayui();
    });
        </script></body></html>