<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:wfw="http://wellformedweb.org/CommentAPI/">
<channel>
<title>小夏的猪窝 - JavaScript</title>
<link>https://blog.x-tools.top/tag/JavaScript/</link>
<atom:link href="https://blog.x-tools.top/feed/tag/JavaScript/" rel="self" type="application/rss+xml" />
<language>zh-CN</language>
<description></description>
<lastBuildDate>Tue, 27 Sep 2022 08:00:00 +0000</lastBuildDate>
<pubDate>Tue, 27 Sep 2022 08:00:00 +0000</pubDate>
<item>
<title>JavaScript - 轮播图</title>
<link>https://blog.x-tools.top/archives/66/</link>
<guid>https://blog.x-tools.top/archives/66/</guid>
<pubDate>Tue, 27 Sep 2022 08:00:00 +0000</pubDate>
<dc:creator>小夏</dc:creator>
<description><![CDATA[轮播图的几点功能：鼠标移入 显示上一张、下一张，移出 则隐藏。点击上下一张，自动切换显示图片，做到有动画效果、无缝切换。鼠标移出时自动每3秒切换图片，鼠标移入时则不自动切换。移动图片时下方小圆点...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<p>轮播图的几点功能：</p><ol><li>鼠标移入 显示上一张、下一张，移出 则隐藏。</li><li>点击上下一张，自动切换显示图片，做到有动画效果、无缝切换。</li><li>鼠标移出时自动每3秒切换图片，鼠标移入时则不自动切换。</li><li>移动图片时下方小圆点也跟随改变选中的图片位置。</li><li>可以点击下方小圆点，切换图片。</li></ol><p>直接放自己写的例子：</p><ol><li><p>首先网页部分及css，自己画的有点潦草...<br><strong>css部分</strong></p><pre><code class="lang-css">&lt;style&gt;
     * {
         margin: 0;
         padding: 0;
     }

     ol {
         list-style: none;
         position: absolute;
         left: 50%;
         bottom: 0;
         transform: translate(-55%, 0);
     }

     ol li {
         display: inline-block;
         width: 10px;
         height: 10px;
         background: rgba(91, 66, 66, 0.3);
         border-radius: 50%;
         border: solid 1px black;
         cursor: pointer;
     }

     .current {
         display: inline-block;
         width: 10px;
         height: 10px;
         background-color: white;
         border-radius: 50%;
         border: solid 1px black;
     }

     .banner {
         position: relative;
         margin: 50px auto 0 auto;
         width: 520px;
         height: 326px;
         overflow: hidden;
     }

     .banner ul {
         position: absolute;
         left: 0;
         top: 0;
         list-style: none;
         width: 550%;
         height: 100%;
         z-index: -1;
     }

     .banner #banner_pic li {
         float: left;

     }

     .banner a {
         display: inline-block;
         cursor: default;
     }

     .banner span {
         display: inline-block;
         width: 25px;
         height: 25px;
         text-align: center;
         font-size: 20px;
         line-height: 25px;
         cursor: pointer;
         color: white;
         background: rgba(0, 0, 0, .3);
     }

     .banner #next {
         display: none;
         position: absolute;
         left: 0;
         top: 150px;
         border-radius: 25%;
     }

     .banner #forward {
         display: none;
         position: absolute;
         right: 0;
         top: 150px;
         border-radius: 25%;
     }

     img {
         display: inline-block;
         width: 520px;
         height: 326px;
     }

     .circle li {
         margin: 0 2px 0 2px;
     }
 &lt;/style&gt;</code></pre><p><strong>html部分</strong></p><pre><code class="lang-html">&lt;body&gt;
&lt;div class=&quot;banner&quot;&gt;
 &lt;span id=&quot;next&quot;&gt;&lt;&lt;/span&gt;
 &lt;span id=&quot;forward&quot;&gt;&gt;&lt;/span&gt;

 &lt;ul id=&quot;banner_pic&quot;&gt;
     &lt;li&gt;
         &lt;a href=&quot;JavaScript:&quot;&gt;
             &lt;img src=&quot;./updatas/1.png&quot; alt=&quot;图&quot;&gt;
         &lt;/a&gt;
     &lt;/li&gt;
     &lt;li&gt;
         &lt;a href=&quot;JavaScript:&quot;&gt;
             &lt;img src=&quot;./updatas/2.png&quot; alt=&quot;图&quot;&gt;
         &lt;/a&gt;
     &lt;/li&gt;
     &lt;li&gt;
         &lt;a href=&quot;JavaScript:&quot;&gt;
             &lt;img src=&quot;./updatas/3.png&quot; alt=&quot;图&quot;&gt;
         &lt;/a&gt;
     &lt;/li&gt;
     &lt;li&gt;
         &lt;a href=&quot;JavaScript:&quot;&gt;
             &lt;img src=&quot;./updatas/4.png&quot; alt=&quot;图&quot;&gt;
         &lt;/a&gt;
     &lt;/li&gt;
 &lt;/ul&gt;
 &lt;ol class=&quot;circle&quot;&gt;

 &lt;/ol&gt;
&lt;/div&gt;
&lt;/body&gt;</code></pre></li><li><p>JavaScript部分</p><pre><code class="lang-javascript"> let main_box = document.querySelector(&quot;.banner&quot;);
 let to_left = main_box.children[0];
 let to_right = main_box.children[1];
 let now_pic = 0;
 let pic_count = 0;
 let pic_ul = document.querySelector(&quot;#banner_pic&quot;);
 let ol = document.querySelector(&quot;.circle&quot;);

 let ThrottleValve = false;
 /**
  * 自动下一章操作
  */
 const auto_fun = function () {
     if (ThrottleValve) return;
     else ThrottleValve = true;

     if (now_pic &gt; pic_count - 1)
         now_pic = 0;
     else if (now_pic === pic_count - 1) {//无缝处理
         new EaseAnimation(pic_ul, (now_pic + 1) * -520, function () {
             pic_ul.style.left = 0 + &quot;px&quot;;
             ThrottleValve = false;//节流阀
         });
         now_pic = 0;
         for (let i = 0; i &lt; ol.children.length; i++) {
             ol.children[i].className = &quot;&quot;;
         }
         ol.children[now_pic].className = &quot;current&quot;;
         return;
     } else
         now_pic++;

     new EaseAnimation(pic_ul, now_pic * -520, function () {
         ThrottleValve = false;//节流阀
     });
     for (let i = 0; i &lt; ol.children.length; i++) {
         ol.children[i].className = &quot;&quot;;
     }
     ol.children[now_pic].className = &quot;current&quot;;
 }
 /**
  * 选中一张操作
  */
 const TogglePicture = function (i) {
     now_pic = i;
     new EaseAnimation(pic_ul, now_pic * -520);
     for (let i = 0; i &lt; ol.children.length; i++) {
         ol.children[i].className = &quot;&quot;;
     }
     ol.children[now_pic].className = &quot;current&quot;;
 }

 //对齐小圆点
 for (let i = 0; i &lt; pic_ul.children.length; i++) {
     let li = document.createElement(&quot;li&quot;);
     if (i === now_pic) {
         li.className = &quot;current&quot;;
     }
     li.addEventListener(&quot;click&quot;, function () {
         TogglePicture(i);
     });
     ol.appendChild(li)
     pic_count++;
 }

 //实现无缝切换
 //1. 拷贝第一张复制到最后
 let pic_start = pic_ul.children[0].cloneNode(true);
 pic_ul.appendChild(pic_start)


 let auto_timer = setInterval(auto_fun, 3000);
 TogglePicture(now_pic);
 main_box.addEventListener(&quot;mouseenter&quot;, function () {
     to_left.style.display = &quot;block&quot;;
     to_right.style.display = &quot;block&quot;;
     clearInterval(auto_timer);
 })

 main_box.addEventListener(&quot;mouseleave&quot;, function () {
     main_box.children[0].style.display = &quot;none&quot;;
     main_box.children[1].style.display = &quot;none&quot;;
     auto_timer = setInterval(auto_fun, 3000);
 })

 to_left.addEventListener(&quot;click&quot;, function () {
     if (ThrottleValve) return;
     else ThrottleValve = true;

     if (now_pic &lt; 0)
         now_pic = pic_count - 1;
     if (now_pic === 0) {//无缝处理
         pic_ul.style.left = pic_count * -520 + &quot;px&quot;;
         now_pic = pic_count - 1;
     } else
         now_pic--;
     console.log(now_pic)
     new EaseAnimation(pic_ul, now_pic * -520, function () {
         ThrottleValve = false;
     });
     for (let i = 0; i &lt; ol.children.length; i++) {
         ol.children[i].className = &quot;&quot;;
     }
     ol.children[now_pic].className = &quot;current&quot;;
 })

 to_right.addEventListener(&quot;click&quot;, function () {
     auto_fun();
 })
</code></pre></li><li><p>还需要js外部文件的一个函数：</p><pre><code class="lang-JavaScript">/**
 * 缓动动画
 * @param obj 目标对象
 * @param target 目标位置
 * @param callback 回调函数
 * @constructor
 */
function EaseAnimation(obj, target, callback) {
 clearInterval(obj.timer);
 obj.timer = setInterval(function () {
     if (obj.offsetLeft === target) {
         clearInterval(obj.timer);
         callback &amp;&amp; callback();
     } else {
         let step = (target - obj.offsetLeft) / 10;
         step = step &gt; 0 ? Math.ceil(step) : Math.floor(step);
         obj.style.left = obj.offsetLeft + step + &quot;px&quot;;
     }
 }, 20)
}</code></pre></li></ol><p>B站课程中将下面的圆点索引和第几张图分开了，我不是按照课程上的写的。<br>我把图片和圆点使用同一个索引，将两者联系在一起。<br>轮播图前面还是挺简单的，但是无缝切换的要求给我绕半天....<br>注意：<br>当我们过快的点击切换图片时，动画效果会不好，所以我们需要<strong>节流阀</strong><br>利用一个flag标志，来控制用户过快的行为，当用户切换图片时关闭阀门，不允许用户再进行操作，我们开始执行动画效果展示，当动画完成时再将阀门打开。<br>这就是原生的JavaScript轮播图。</p>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.x-tools.top/archives/66/#comments</comments>
<wfw:commentRss>https://blog.x-tools.top/feed/tag/JavaScript/</wfw:commentRss>
</item>
<item>
<title>JavaScript - DOM获取页面元素</title>
<link>https://blog.x-tools.top/archives/48/</link>
<guid>https://blog.x-tools.top/archives/48/</guid>
<pubDate>Wed, 06 Jul 2022 16:01:00 +0000</pubDate>
<dc:creator>小夏</dc:creator>
<description><![CDATA[&lt;!--[toc]--&gt;目前本人在学习JavaScript中WebAPI教学，本篇为学习笔记，本人所有笔记都同步在个人资源站点 - 笔记中，欢迎学习，任何意见问题请联系我，谢谢。根据...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<p>&lt;!--[toc]--&gt;</p><blockquote>目前本人在学习JavaScript中WebAPI教学，本篇为学习笔记，本人所有笔记都同步在<a href="https://file.x-tools.top/%E7%AC%94%E8%AE%B0">个人资源站点 - 笔记</a>中，欢迎学习，任何意见问题请联系我，谢谢。</blockquote><h1>根据id获取</h1><ul><li>使用 <code>getElementById()</code> 方法可以获取带有ID的元素对象</li></ul><ul><li>id大小写敏感，代表了所查找的元素的唯一ID</li></ul><pre><code class="lang-js">let ele = document.getElementById('main1');
console.log(ele);</code></pre><p>返回的是一个对象</p><h1>根据标签名获取</h1><p>使用 <code>getElementsByTagName()</code> 方法可以返回带有指定标签名的对象的集合</p><pre><code class="lang-js">let lis = document.getElementsByTagName('li');
console.log(lis)
// console.dir(lis)
for (let i = 0; i &lt; lis.length; i++) {
    console.log(lis[i].textContent)
}</code></pre><p>返回的是 获取过来元素对象的集合 以伪数组的形式存储的</p><p>返回的方式需要通过遍历使用</p><p>如果页面中没有这个标签，则返回的是空的伪数组[]</p><ul><li>取ol中的li写法</li><li><pre><code class="lang-js">let lis = document.getElementsByTagName('ol')[0].getElementsByTagName('li');
console.log(lis)
// console.dir(lis)
for (let i = 0; i &lt; lis.length; i++) {
    console.log(lis[i].textContent)
}</code></pre></li></ul><h1>通过HTML5新增的方法获取</h1><h2>普通</h2><p>使用 <code>getElementsByClassName('类名')</code> 的写法获取类名的标签</p><p>不通用 不兼容ie5678 写小程序 或 手机网页可以使用</p><pre><code class="lang-js">let main = document.getElementsByClassName('main')
console.log(main)</code></pre><p>返回伪数组的形式 存储的是对象</p><h2>query选择器</h2><blockquote>返回指定选择器的第一个元素对象</blockquote><pre><code class="lang-js">let main = document.querySelector('.main')
console.log(main)

let nav = document.querySelector('#nav')
console.log(nav)

let li = document.querySelector('li')
console.log(li)</code></pre><p>非常方便 ， 但是只返回查找到的第一个元素</p><h2>queryall选择器</h2><blockquote>和querySelector不同 它返回的是所有对象伪数组</blockquote><pre><code class="lang-js">    let lis = document.querySelectorAll('li')
    console.log(lis)</code></pre><h1>特殊元素获取</h1><h2>获取body元素</h2><pre><code class="lang-js">    let bd = document.body
    console.log(bd)</code></pre><h2>获取html元素</h2><pre><code class="lang-js">    let hm = document.documentElement
    console.log(hm)</code></pre>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.x-tools.top/archives/48/#comments</comments>
<wfw:commentRss>https://blog.x-tools.top/feed/tag/JavaScript/</wfw:commentRss>
</item>
<item>
<title>JavaScript - 语言基础笔记</title>
<link>https://blog.x-tools.top/archives/45/</link>
<guid>https://blog.x-tools.top/archives/45/</guid>
<pubDate>Thu, 30 Jun 2022 10:14:32 +0000</pubDate>
<dc:creator>小夏</dc:creator>
<description><![CDATA[&lt;!--[toc]--&gt;本笔记没有Web APIs的DOM BOM操作！此笔记仅仅是js基础。学习自B站黑马程序员的JS0基础教程JavaScript 与 Java 是两种完全不同的...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<p>&lt;!--[toc]--&gt;</p><ul><li>本笔记没有Web APIs的DOM BOM操作！</li><li>此笔记仅仅是js基础。</li><li>学习自B站黑马程序员的<a href="https://www.bilibili.com/video/BV1ux411d75J?share_source=copy_web">JS0基础教程</a></li></ul><blockquote>JavaScript 与 Java 是两种完全不同的语言，无论在概念上还是设计上。<br>Java（由 Sun 发明）是更复杂的编程语言。</blockquote><h1>常用函数</h1><h2><code>&lt;script&gt;</code></h2><p>JS，JavaScript当然要用到这个标签啦~</p><p><code>&lt;script&gt;标签</code></p><p>在 HTML 页面中插入 JavaScript，请使用 <code>&lt;script&gt;</code> 标签。</p><pre><code class="lang-js">&lt;script&gt;
alert(&quot;我的第一个 JavaScript&quot;);
&lt;/script&gt;</code></pre><p>浏览器会解释并执行位于 <code>&lt;script&gt;</code> 和 <code>&lt;/script&gt;</code>之间的 JavaScript 代码</p><blockquote>那些老旧的实例可能会在 <code>&lt;script&gt;</code> 标签中使用 type="text/javascript"。现在已经不必这样做了。JavaScript 是所有现代浏览器以及 HTML5 中的默认脚本语言。</blockquote><h2>写标签<code>document.write()</code></h2><p>直接写标签，</p><p>可以直接在js标签中写入html标签及内容。</p><h2>弹窗提示<code>alert()</code></h2><p>弹窗提示，对用户不友好，</p><p>但是对测试，编程人员很管用。</p><h2>输入<code>prompt()</code></h2><p>弹出阻断用户操作的弹窗，让用户输入数据</p><h2>输出<code>console.log()</code></h2><p>控制台输出语句</p><h2>查找页面元素<code>document.getElementById()</code></h2><p>查找页面元素，</p><p>参数可以填html中的id标签内容。</p><p>用于更改id的内容信息属性等。</p><p>已知可以更改内容(<code>innerHTML</code>)，图片链接属性(<code>src</code>)，样式表中的属性如颜色<code>style.color</code></p><h2>字符串匹配<code>str.match()</code></h2><p>可以在字符串中匹配参数中的字符串，如果存在则为True真，不存在则为False假</p><h2>属性：<code>innerHTML</code></h2><p>返回值是一个object类型，可以使用返回值的<code>innerHTML</code>属性改变其标签内容。</p><h2><code>onclick:</code>属性</h2><p>存在于button按钮中，此写法为行内式的写法</p><p>里面可以放弹窗测试等等，</p><p>可以放js函数，语句等。</p><h1>为什么学习 JavaScript?</h1><p>JavaScript 是 web 开发人员必须学习的 3 门语言中的一门：</p><ol><li><strong>HTML</strong> 定义了网页的内容</li><li><strong>CSS</strong> 描述了网页的布局</li><li><strong>JavaScript</strong> 控制了网页的行为</li></ol><h1>JavaScript 是脚本语言</h1><p>JavaScript 是一种轻量级的编程语言。</p><p>JavaScript 是可插入 HTML 页面的编程代码。</p><p>JavaScript 插入 HTML 页面后，可由所有的现代浏览器执行。</p><p>JavaScript 很容易学习。</p><h1>document.write 直接写入 HTML 输出流</h1><p>您只能在 HTML 输出中使用 document.write。如果您在文档加载后使用该方法，会覆盖整个文档。</p><pre><code class="lang-js">&lt;script&gt;
document.write(&quot;&lt;h1&gt;这是一个标题&lt;/h1&gt;&quot;);
document.write(&quot;&lt;p&gt;这是一个段落。&lt;/p&gt;&quot;);
&lt;/script&gt;</code></pre><h1>alert() 弹窗测试</h1><p>alert() 函数在 JavaScript 中并不常用，但它对于代码测试非常方便。</p><pre><code class="lang-js">alert('欢迎!')</code></pre><h1>对事件的反应</h1><pre><code class="lang-js">&lt;button type=&quot;button&quot; onclick=&quot;alert('欢迎!')&quot;&gt;点我!&lt;/button&gt;</code></pre><h1>改变 HTML 内容</h1><p>使用 JavaScript 来处理 HTML 内容是非常强大的功能。</p><pre><code class="lang-js">x=document.getElementById(&quot;demo&quot;);  //查找id元素
x.innerHTML=&quot;Hello JavaScript&quot;;    //改变内容</code></pre><pre><code class="lang-js">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt; 
&lt;meta charset=&quot;utf-8&quot;&gt; 
&lt;title&gt;菜鸟教程(runoob.com)&lt;/title&gt; 
&lt;/head&gt;
&lt;body&gt;
    
&lt;h1&gt;我的第一段 JavaScript&lt;/h1&gt;
&lt;p id=&quot;demo&quot;&gt;
JavaScript 能改变 HTML 元素的内容。
&lt;/p&gt;
&lt;script&gt;
function myFunction()
{
    x=document.getElementById(&quot;demo&quot;);  // 找到元素
    alert(x.innerHTML)
    x.innerHTML=&quot;Hello JavaScript!&quot;;    // 改变内容
}
&lt;/script&gt;
&lt;button type=&quot;button&quot; onclick=&quot;myFunction()&quot;&gt;点击这里&lt;/button&gt;
    
&lt;/body&gt;
&lt;/html&gt;</code></pre><p>您会经常看到 <strong>document.getElementById("<strong><em></strong>some id</em></strong><strong>")</strong>。这个方法是 HTML DOM 中定义的。</p><p>DOM (<strong>D</strong>ocument <strong>O</strong>bject <strong>M</strong>odel)（文档对象模型）是用于访问 HTML 元素的正式 W3C 标准。</p><h2>JavaScript：验证输入</h2><p>JavaScript 常用于验证用户的输入，验证输入是否为数字。</p><pre><code class="lang-js">&lt;script&gt;
function myFunction()
{
    var x=document.getElementById(&quot;demo&quot;).value;
    if(x==&quot;&quot;||isNaN(x))
    {
        alert(&quot;不是数字&quot;);
    }
}
&lt;/script&gt;</code></pre><p>以上实例只是普通的验证，如果要在生产环境中使用，需要严格判断，如果输入的空格，或者连续空格 isNaN 是判别不出来的。可以添加正则来判断</p><pre><code class="lang-js">&lt;script&gt;
function myFunction()
{
    var x=document.getElementById(&quot;demo&quot;).value;
    if(isNaN(x)||x.replace(/(^\s*)|(\s*$)/g,&quot;&quot;)==&quot;&quot;){
        alert(&quot;不是数字&quot;);
    }
}
&lt;/script&gt;</code></pre><h1>JavaScript 用法</h1><p>HTML 中的脚本必须位于 <code>&lt;script&gt;</code> 与 <code>&lt;/script&gt;</code> 标签之间。</p><p>脚本可被放置在 HTML 页面的 <code>&lt;body&gt;</code> 和 <code>&lt;head&gt;</code> 部分中。</p><p>您可以在 HTML 文档中放入<strong>不限数量</strong>的脚本。</p><p>通常的做法是把函数放入 <code>&lt;head&gt;</code> 部分中，或者放在页面底部。</p><h2><code>&lt;body&gt;</code> 中的 JavaScript</h2><p>使用<code>document.write</code>写到<code>&lt;body&gt;</code> 标签中。</p><pre><code class="lang-js">&lt;body&gt;
&lt;script&gt;
document.write(&quot;&lt;h1&gt;这是一个标题&lt;/h1&gt;&quot;);
document.write(&quot;&lt;p&gt;这是一个段落&lt;/p&gt;&quot;);
&lt;/script&gt;
&lt;/body&gt;</code></pre><h1><code>&lt;head&gt;</code> 中的 JavaScript 函数</h1><p>和body中的js函数两者没有区别。</p><pre><code class="lang-js">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;script&gt;
function myFunction()
{
    document.getElementById(&quot;demo&quot;).innerHTML=&quot;我的第一个 JavaScript 函数&quot;;
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;我的 Web 页面&lt;/h1&gt;
&lt;p id=&quot;demo&quot;&gt;一个段落&lt;/p&gt;
&lt;button type=&quot;button&quot; onclick=&quot;myFunction()&quot;&gt;尝试一下&lt;/button&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre><h1><strong>外部的 JavaScript</strong></h1><p>也可以把脚本保存到外部文件中。外部文件通常包含被多个网页使用的代码。</p><p>外部 JavaScript 文件的文件扩展名是 <code>.js</code>。</p><p>如需使用外部文件，请在 <code>&lt;script&gt;</code> 标签的 "src" 属性中设置该 .js 文件：</p><pre><code class="lang-js">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt; 
&lt;meta charset=&quot;utf-8&quot;&gt; 
&lt;title&gt;菜鸟教程(runoob.com)&lt;/title&gt; 
&lt;/head&gt;
&lt;body&gt;
    
&lt;h1&gt;我的 Web 页面&lt;/h1&gt;
&lt;p id=&quot;demo&quot;&gt;一个段落。&lt;/p&gt;
&lt;button type=&quot;button&quot; onclick=&quot;myFunction()&quot;&gt;点击这里&lt;/button&gt;
&lt;p&gt;&lt;b&gt;注释：&lt;/b&gt;myFunction 保存在名为 &quot;myScript.js&quot; 的外部文件中。&lt;/p&gt;
&lt;script src=&quot;myScript.js&quot;&gt;&lt;/script&gt;
    
&lt;/body&gt;
&lt;/html&gt;</code></pre><p>myScript.js 文件代码如下：</p><pre><code class="lang-js">function myFunction()
{
    document.getElementById(&quot;demo&quot;).innerHTML=&quot;我的第一个 JavaScript 函数&quot;;
}</code></pre><h1>变量</h1><blockquote>和C差不多啦</blockquote><ul><li>一次声明多个变量并且赋值</li></ul><pre><code class="lang-javascript">var a = 9, b = 10, c = 11;
// 多个变量赋值 声明 时  需要使用逗号分割</code></pre><ul><li>变量声明 但未赋值</li></ul><p>此时输出的是<code>undefined</code>（未定义的）</p><ul><li>不声明 不赋值 直接使用 会报错</li><li>不声明 直接赋值 可以使用！</li></ul><h1>数据类型</h1><p>JS是弱类型的脚本语言，</p><p>其变量的数据类型是根据欲赋值的变量来确定的。</p><p>变量的数据类型在运行中是可以改变 变化的。</p><h2>简单数据类型</h2><ul><li><p>Nubmer 数字类型</p><ul><li>八进制：<code>var num1 = 010;</code> //零开头的是八进制</li><li>十六进制： <code>var num2 = 0xa;</code> //0x开头的是十六进制</li><li>数值的最大值：<strong>Number.MAX_VALUE</strong> 最小值：<strong>Number.MIN_VALUE</strong></li><li>无穷大： <code>Infinity</code> 大于任何数值</li><li>无穷小： <code>-Infinity</code> 小于任何数值</li><li><code>NaN</code> ， Not a number， 代表一个非数值</li></ul></li><li>String 字符串类型</li><li>Boolean 布尔值</li><li>Undefined 未声明</li><li>Null 空值类型</li></ul><h2>复杂数据类型</h2><ul><li>object 对象类型</li></ul><h1>三元表达式</h1><p>和c一样</p><p><code>x?t:f</code></p><h1>断点调试</h1><p><img src="http://cdn.x-tools.top/MarkDownImg/202263052517111.png" alt="" title=""></p><h1>数组</h1><ul><li>关键字 <code>Array</code></li><li>数组就是一组数据的集合</li></ul><h2>创建数组</h2><ul><li>new 创建</li></ul><p><code>var arr = new Array();</code></p><ul><li>字面量直接创建</li></ul><p><code>var arr = [1,2,3,4];</code></p><p><code>var arr = [true,&quot;2&quot;,3,&quot;4&quot;];</code></p><h2>使用</h2><p>利用索引下标 从0开始</p><ul><li>遍历拼接</li></ul><pre><code class="lang-js">        var arr = [1, 2, 3, 34, 5, 346, 47, 35, 3, 767, 8, 345, 57];
        var str = &quot;&quot;;
        arr.forEach((val, ind, arr) =&gt; {
                if (ind === (arr.length - 1)) {
                    str += val;
                } else
                    str += val + &quot;|&quot;;
            }
        )
        console.log(str);</code></pre><h2>添加新元素</h2><ul><li>修改length长度</li></ul><p><img src="http://cdn.x-tools.top/MarkDownImg/202263054186474.png" alt="" title=""></p><ul><li>修改数组索引号</li></ul><p><img src="http://cdn.x-tools.top/MarkDownImg/202263054240597.png" alt="" title=""></p><ul><li>通过数组对象方法push</li></ul><pre><code class="lang-js">        var arr = [1, 2, 3, 34, 5, 346, 47, 35, 3, 767, 8, 345, 57];
        arr.push(1);
        console.log(arr);</code></pre><h2>案例</h2><h3>去重</h3><pre><code class="lang-js">let arr = [1, 2, 3, 4, 5, 5, 1, 1, 1, 14, 6];
let newarr = [];
let j = arr[0];
for (let i = 0; i &lt; arr.length; i++) {
    if (newarr.indexOf(arr[i]) === -1)
        newarr[newarr.length] = arr[i];
}
console.log(arr);
console.log(newarr);</code></pre><h3>颠倒</h3><pre><code class="lang-js">let arr = [1, 2, 3, 4, 5, 5, 1, 1, 1, 14, 6];
let newarr = new Array();
for (let i = (arr.length - 1); i &gt;= 0; i--) {
    newarr[newarr.length] = arr[i];
}
console.log(arr);
console.log(newarr);</code></pre><h3>升序</h3><pre><code class="lang-js">let arr = [1, 2, 3, 4, 5, 5, 1, 1, 1, 14, 6];
console.log(arr);
arr.sort((a, b) =&gt; {
    return a - b;
});
console.log(arr);</code></pre><h3>降序</h3><pre><code class="lang-js">let arr = [1, 2, 3, 4, 5, 5, 1, 1, 1, 14, 6];
console.log(arr);
arr.sort((a, b) =&gt; {
    return b - a;
});
console.log(arr);</code></pre><h3>转换字符串</h3><pre><code class="lang-js">let arr = [1, 2, 3, 4, 5, 5, 1, 1, 1, 14, 6];
arr.join('|');</code></pre><h1>函数</h1><p>包装功能相似的代码 经常使用</p><ul><li><ol><li>函数定义</li></ol></li></ul><pre><code class="lang-js">function f(a, b) {
    console.log(a, b);
}</code></pre><p>函数定义使用关键字<code>function</code>声明</p><p>声明调用和c一样</p><ul><li><ol start="2"><li>函数表达式</li></ol></li></ul><pre><code class="lang-js">var fun = function(){};</code></pre><h2>参数匹配问题</h2><ol><li>如果参数匹配一致，则[正常输出结果]</li><li>如果实参的个数多余形参的个数，[不会报错，会取到形参的个数]</li><li><p>如果实参的个数小于形参的个数，</p><ol><li>形参可以是看做不用声明的变量 如果没有接受到值 那么就是<code>undefined</code></li><li>返回[<code>NaN</code>]</li></ol></li></ol><h2>返回值</h2><blockquote>C</blockquote><ul><li>如果没有<code>return</code> 则返回的是<code>undefined</code></li></ul><h2>arguments的使用</h2><p><img src="http://cdn.x-tools.top/MarkDownImg/202263055917889.png" alt="" title=""></p><p><img src="http://cdn.x-tools.top/MarkDownImg/202263056086051.png" alt="" title=""></p><ul><li>他是伪数组</li></ul><pre><code class="lang-js">f(12, 32);

function f(a, b) {
    console.log(a, b, arguments.length);
}</code></pre><ul><li>实参长度    <code>arguments.length</code></li></ul><blockquote>可以使用它来定义无限形参的函数</blockquote><h1>预解析</h1><ul><li>坑</li></ul><p><img src="http://cdn.x-tools.top/MarkDownImg/202263056862437.png" alt="" title=""></p><p>运行顺序：</p><ol><li><strong>预解析</strong></li><li>执行代码</li></ol><ul><li>预解析</li><li>js引擎 会把js里面所有的var 还有 function 提升到当前作用于的最前面</li></ul><ul><li><p>变量预解析 变量提升</p><ul><li>就是把所有的变量声明提升到作用于最前面 不提升赋值操作</li></ul></li></ul><ul><li><p>函数预解析 函数提升</p><ul><li>就是把所有的函数声明提升到作用于最前面 不进行调用</li></ul></li></ul><h1>对象</h1><blockquote>对象是一组无序的相关属性和方法的集合</blockquote><ul><li>对象 = 属性 + 方法</li><li>属性 ： 特征</li><li>方法 ： 行为</li></ul><p><img src="http://cdn.x-tools.top/MarkDownImg/202263057804706.png" alt="" title=""></p><h2>创建</h2><ol><li><strong><code>对象字面量</code></strong>： 就是花括号{ }里面包含了表达这个具体事物的属性和方法</li></ol><p>空对象<code>let obj = {};</code></p><ol start="2"><li><code>new Object()</code>创建</li></ol><pre><code class="lang-js">let obj = new Object();//创建一个空对象
obj.name = '张三丰';
obj.age = 18;
</code></pre><ol start="3"><li>使用构造函数创建</li></ol><p><img src="http://cdn.x-tools.top/MarkDownImg/202263058548193.png" alt="" title=""></p><ul><li>语法格式</li></ul><pre><code class="lang-js">function 构造() {
    this.name = '';
    this.fun = function () {

    }
}
new 构造();</code></pre><pre><code class="lang-js">function Star(name, age, sex) {
    this.name = name;
    this.age = age;
    this.sex = sex;
}

let str1 = new Star('刘德华', 18, '男');
console.log(str1.name);</code></pre><pre><code class="lang-js">function Star(name, age, sex) {
    this.name = name;
    this.age = age;
    this.sex = sex;
    this.sing = function () {
        for (let i = 0; i &lt; arguments.length; i++) {
            console.log(arguments[i]);
        }
    }
}

let str1 = new Star('刘德华', 18, '男');
console.log(str1.name);
str1.sing('冰雨', '忘情水');</code></pre><h2>使用</h2><pre><code class="lang-js">let obj = {
    name: '张三丰',
    age: 18,
    sex: '男',
    SayMy: function () {
        console.log(this.name, this.age, this.sex);
    }
};
obj.name;
obj['age'];
obj.SayMy();</code></pre><ol><li>里面的属性方法采用键值对的形式</li><li>多个属性方法中间使用逗号隔开</li><li>方法后面跟的是一个匿名函数</li></ol><h2>new</h2><p><img src="http://cdn.x-tools.top/MarkDownImg/202263059239580.png" alt="" title=""></p><h1>for ··· in ····</h1><p>用来遍历对象</p><pre><code class="lang-js">        function Star(name, age, sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.sing = function () {
                for (let i = 0; i &lt; arguments.length; i++) {
                    console.log(arguments[i]);
                }
            }
        }

        let str1 = new Star('刘德华', 18, '男');
        for (let tmp in str1) {
            console.log(tmp);
            if (typeof str1[tmp] != 'function')
                console.log(str1[tmp]);
            else {
                console.log('this is function!Run')
                str1[tmp]('bb', 'aa', 'cc');
            }
            console.log(typeof str1[tmp]);
        }</code></pre><h1>内置对象</h1><h2>Math数学</h2><p><img src="http://cdn.x-tools.top/MarkDownImg/202263060677594.png" alt="" title=""></p><ul><li>随机数方法</li><li><code>random()</code></li><li><a href="https://www.runoob.com/jsref/jsref-random.html">https://www.runoob.com/jsref/jsref-random.html</a></li></ul><pre><code class="lang-js">function getRndInteger(min, max) {
  return Math.floor(Math.random() * (max - min + 1) ) + min;
}</code></pre><h2>日期对象</h2><pre><code class="lang-js">let date = new Date();
console.log(date);//Thu Jun 30 2022 16:56:49 GMT+0800 (香港标准时间)

let date1 = new Date(2022, 6, 30);
console.log(date1);//Sat Jul 30 2022 00:00:00 GMT+0800 (香港标准时间)

let date2 = new Date('2022-6-30 16:59:00');
console.log(date2);//Thu Jun 30 2022 16:59:00 GMT+0800 (香港标准时间)

let year = new Date().getFullYear();
console.log(year);//2022

let mon = new Date().getMonth() + 1;//得到的是0-11
console.log(mon);//5

let week = new Date().getDay();
console.log(week);//4 注意 周日返回的是0</code></pre><h3>倒计时案例</h3><p><img src="http://cdn.x-tools.top/MarkDownImg/202263062613547.png" alt="" title=""></p><h2>String 字符串</h2><p><img src="http://cdn.x-tools.top/MarkDownImg/202263063597209.png" alt="" title=""></p><h1><code>instanceof</code>类型判断</h1><p><img src="http://cdn.x-tools.top/MarkDownImg/202263062990247.png" alt="" title=""></p><pre><code class="lang-js">//true
//false</code></pre>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.x-tools.top/archives/45/#comments</comments>
<wfw:commentRss>https://blog.x-tools.top/feed/tag/JavaScript/</wfw:commentRss>
</item>
</channel>
</rss>