JavaScript基础(Dom操作)

2023-11-05

一,BOM模型

BOM提供了独立于内容的、可与浏览器窗口进行互动的对象结构
BOM:浏览器对象模型(Browser Object Model)
在这里插入图片描述

1.1,BOM可实现功能

弹出新的浏览器窗口
移动、关闭浏览器窗口以及调整窗口的大小
页面的前进、后退

二,Window对象的常用属性

表示浏览器中打开的窗口
常用的属性

在这里插入图片描述
这里面有Window所有对象我这截图不全,里面带f的是函数,不带的是属性

属性名称 说 明
history 有关客户访问过的URL的信息
location 有关当前 URL 的信息
screen 只读属性,包含客户端显示屏幕的信息

语法:
window.属性名= "属性值";

在这里插入图片描述
返回这个点击直接跳转百度页面

screen.width 返回浏览器屏幕的宽度,单位为像素;
在这里插入图片描述

2.1,Window对象的常用方法

常用的方法

方法名称 说 明
prompt( ) 显示可提示用户输入的对话框
alert( ) 显示带有一个提示信息和一个确定按钮的警示框
confirm( ) 显示一个带有提示信息、确定和取消按钮的对话框
close( ) 关闭浏览器窗口
open( ) 打开一个新的浏览器窗口,加载给定 URL 所指定的文档
setTimeout( ) 在指定的毫秒数后调用函数或计算表达式
setInterval( ) 按照指定的周期(以毫秒计)来调用函数或表达式
clearTimeout( ) 用于停止执行setTimeout( )方法的函数代码
clearInterval( ) 用于停止 setInterval( ) 方法执行的函数代码

2.1-1,open()和close()方法

<body>
    <div>
        <input type="button" value="打开窗口" onclick="openwin()"></input>
        <input type="button" value="关闭窗口" onclick="closewin()">
    </div>

</body>
<script>
    function openwin(){
        window.open("https://www.baidu.com.cn","win1")
    }
    function closewin(){
        window.close()
    }
</script>

Video_20230822152329

在这里插入图片描述

第一个按钮可以打开窗口,第二个按钮可以关闭窗口

窗口特征的一些属性

属性名称 说 明
height、width 窗口文档显示区的高度、宽度,以像素计
left、top 窗口的x坐标、y坐标,以像素计
toolbar=yes ,no, 1 , 0 是否显示浏览器的工具栏,黙认是yes
scrollbars=yes,no,1,0 是否显示滚动条,黙认是yes
location=yes,no,1,0 是否显示地址地段,黙认是yes
status=yes,no,1,0 是否添加状态栏,黙认是yes
menubar=yes,no,1,0 是否显示菜单栏,黙认是yes
resizable=yes,no,1,0 窗口是否可调节尺寸,黙认是yes
titlebar=yes,no,1,0 是否显示标题栏,黙认是yes
fullscreen=yes,no,1,0 是否使用全屏模式显示浏览器,黙认是no。处于全屏模式的窗口必须同时处于剧院模式

三,History对象

保存用户上网的历史记录,可通过window.history属性访问

常用属性和方法

类别 名称 说明
属性 length 返回历史记录列表中的网址数
方法 back() 加载 History 对象列表中的前一个URL
方法 forward() 加载 History 对象列表中的下一个URL
方法 go() 加载 History 对象列表中的某个具体URL

在这里插入图片描述

<body>
    <div>
        <input type="button" value="跳转窗口" onclick="gotodemo01()">
    </div>

</body>
<script>
    function gotodemo01(){
        window.location.href="demo01.html"
    }
</script>

Video_20230822152033

<body>
    <div>
        <input type="button" value="打开窗口" onclick="openwin()"></input>
        <input type="button" value="关闭窗口" onclick="closewin()">
        <input type="button" value="跳转窗口" onclick="gotodemo01()">
        <input type="button" value="前进" onclick="qinajin()">
    </div>

</body>
<script>
    function openwin(){
        window.open("https://www.baidu.com.cn","win1")
    }
    function closewin(){
        window.close()
    }
    function gotodemo01(){
        window.location.href="demo01.html"
    }
    function qinajin(){
        window.history.forward();
    }
</script>
<body>
    passerby
    <div>
        <input type="button" value="后退" onclick="goblock()">
    </div>
</body>
<script>
    function goblock(){
        window.history.back();
    }
</script>

Video_20230822152919

四,Location对象

包含有关当前URL的信息,可通过window.location属性访问

常用属性

名称 说 明
host 设置或返回主机名和当前URL的端口号
hostname 设置或返回当前URL的主机名
href 设置或返回完整的URL

常用方法

名称 说 明
reload() 重新加载当前文档
replace() 用新的文档替换当前文档

在这里插入图片描述

五,Document对象的常用方法

Document对象代表整个HTML文档
Document对象的常用方法

名 称 说 明 唯一
getElementById() 返回对拥有指定id的第一个对象的引用 对象的id唯一
getElementsByName() 返回带有指定名称的对象的集合 相同name属性
getElementsByTagName() 返回带有指定标签名的对象的集合 相同的元素
write() 向文档写文本、HTML表达式或JavaScript代码

写了一个小例子:

<!DOCTYPE html>
<html>

<head lang="en">
    <meta charset="UTF-8">
    <title>使用document对象操作页面</title>
    <style type="text/css">
        body,
        input,
        div,
        p{
            margin: 0;
            padding: 0;
        }

        body {
            font-size: 14px;
            font-family: "微软雅黑";
            line-height: 25px;
        }

        .content {
            width: 600px;
            margin: 30px auto;
        }

        .content img {
            float: left;
            width: 180px;
        }

        .r {
            float: right;
            width: 400px;
        }

        input[name="changephone"] {
            width: 100px;
            height: 28px;
            line-height: 28px;
            text-align: center;
            font-size: 14px;
            font-family: "微软雅黑";
            margin: 10px 0 10px 0;
        }

        input[name="size"] {
            width: 50px;
            text-align: center;
        }
        #replace {
            border: 1px solid rgb(179, 179, 179);
            height: 60px;
        }
    </style>
</head>

<body>
    <div class="content">
        <img src="images/pro4.jpg" alt="1+8Plus" />
        <div class="r">
            产品名称:<span id="phone123">1+8 Plus</span> <br>
            <input name="changephone" value="更换产品名称" type="button" onclick="changeName();" /><br>
           规格选择:
            <input name="size" type="text" value="64G" />
            <input name="size" type="text" value="128G" />
            <input name="size" type="text" value="256G" />
            <input name="size" type="text" value="512G" /><br>
            <input name="b2" type="button" value="input内容" onclick="all_input()" />
            <input name="b3" type="button" value="所有规格" onclick="s_input()" />
            <input name="b4" type="button" value="清空页面内容" onclick="clearAll()" />
            <p id="replace"></p>
        </div>
    </div>
    <script type="text/javascript">
        function changeName(){
            document.getElementById("phone123").innerHTML="ABC"
        }
        function all_input(){
            var inputArray = document.getElementsByTagName("input");
            var inputHtml = "";
            for(var i=0; i<inputArray.length; i++){
                var myinput = inputArray[i];
                inputHtml = inputHtml + myinput.value + "";
            }
            document.getElementById("replace").innerHTML=inputHtml;
        }

        function s_input(){
            var inputArray = document.getElementsByName("size");
            var inputHtml = "";
            for(var i=0; i<inputArray.length; i++){
                var myinput = inputArray[i];
                inputHtml = inputHtml + myinput.value + "";
            }
            document.getElementById("replace").innerHTML=inputHtml;
        }
        function clearAll(){
            document.getElementById("replace").innerHTML="";
        }
    </script>
</body>

</html>

Video_20230822170835

六,定时函数

超时调用:setTimeout()

window.setTimeout("调用的函数", 等待的毫秒数);

间歇调用:setInterval()

window.setInterval("调用的函数", 间隔的毫秒数);

示例

<!-- 加载完执行的事件 -->
<body onload="init()">
    

</body>
<script>
    function init(){
        setTimeout("fun1()",3000);
        // 3秒(3000毫秒)后执行fun1()函数一次
        setInterval("fun2()",2000)
        // 每隔2秒(2000毫秒)执行一次fun2()函数
    }

    


    function fun1(){
        console.log(1);
    }

    function fun2(){
        console.log(2);
    }
</script>

Video_20230822172316

6.1,清除函数

clearTimeout()

clearTimeout(setTimeOut()返回的ID)

clearInterval()

clearInterval(setInterval()返回的ID)

示例

<!-- 加载完执行的事件 -->
<body onload="init()">
    <input type="button" value="停止" onclick="stopInterval()">

    <input type="button" value="开始" onclick="startInterval()">

</body>
<script>

    var intervalIndex;

    function init(){
        setTimeout("fun1()",3000);
        // 3秒(3000毫秒)后执行fun1()函数一次
        intervalIndex = setInterval("fun2()",2000)
        // 每隔2秒(2000毫秒)执行一次fun2()函数
    }
    function fun1(){
        console.log(1);
    }

    function fun2(){
        console.log(2);
    }

    function stopInterval(){
        clearInterval(intervalIndex)
    }
    function startInterval(){
        intervalIndex = setInterval("fun2()",2000)
        // 每隔2秒(2000毫秒)执行一次fun2()函数
    }
</script>

Video_20230822173613

七,写了一个小游戏 (模拟小球移动)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    #box{
        border: 1px sandybrown solid;
        height: 100px;
        width: 100px;
        text-align: center;
        line-height: 100px;
        border-radius: 50px;
        position: absolute;
        left: 100px;
    }
</style>
<body> 
    <div id="box">点击开始</div>
</body>
<script>

//    绑定点击事件

    /**
     * 1.画静态页面
     * 2.绑定点击事件
     * 3.点击一次移动导固定位置(点一次移动一次)
     * 4.点击一次在原有的基础上移动固定位置(点一次移动一次)
     * 5.点击一次持续移动
     * 6.点击后,能判断出是要停止还是移动
     * 7.在停止的对应的代码上,停止循环
     * **/
    var boxDom = document.getElementById("box");
        // 创建一个绑定事件
    boxDom.addEventListener("click",isMove);
    var intervalIndex; 

    function isMove(){
        
        var boxHtml = boxDom.innerHTML // Div文字内容
        if(boxHtml=='点击停止'){
            // 停止循环
            clearInterval(intervalIndex);
            boxDom.innerHTML="点击开始"
        }else{
            // 开始循环
            intervalIndex = setInterval("Move()",10)
        }
        
    }
    // 方法调用一次移动1px
    function Move(){
        console.log(1);
        var leftVal = window.getComputedStyle(boxDom).left;
        console.log(leftVal);
        leftVal = parseInt(leftVal);
        leftVal =  leftVal+1;
        boxDom.style.left = leftVal+"px"
        boxDom.innerHTML="点击停止"
    }
</script>
</html>

Video_20230822175824

最后

送大家一句话:变好的过程都不太舒服,试试在努力点

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript基础(Dom操作) 的相关文章

  • 正则表达式中的“g”标志是什么意思?

    的含义是什么g正则表达式中的标志 之间有什么区别 g and g用于全局搜索 这意味着它将匹配所有出现的情况 通常你还会看到i这意味着忽略大小写 参考 全局 JavaScript MDN https developer mozilla or
  • Vue.JS 2.5.1:未捕获的语法错误:意外的令牌导出

    我试图使用 VueJS 和 Bootstrap Vue 制作一个单选按钮 但是当我制作它时发生了这种情况 我预计这是语法错误 就像它所说的那样 但我似乎找不到任何线索 所以我尝试复制粘贴代码 这是 test radio php 的完整代码
  • 在 Javascript 中本地化字符串

    我目前正在使用 resx文件来管理我的 NET 服务器端资源 我正在处理的应用程序还允许开发人员将 JavaScript 插入各种事件处理程序中以进行客户端验证等 对我来说本地化 JavaScript 消息和字符串的最佳方法是什么 理想情况
  • Streamjs和linqjs有什么关系

    读完SICP后 我最近发现streamjs https github com dionyziz stream js 开发商参考linqjs http linqjs codeplex com 作为具有不同语法的替代实现 但我无法建立连接 St
  • javascript 和 PHP 中的正则表达式有什么区别吗?

    这是在 javascript 中验证电子邮件地址的正则表达式 我不确定是否可以直接在 PHP 中使用它 a z d u00A0 uD7FF uF900 uFDCF uFDF0 uFFEF a z d u00A0 uD7FF uF900 uF
  • TRACKER:错误TRK0005:无法找到:“CL.exe”。该系统找不到指定的文件

    我尝试在 Windows 8 上的 Node js 项目中执行以下命令 npm 安装 电子邮件受保护 cdn cgi l email protection 但我收到一个错误 我不知道如何处理 TRACKER 错误TRK0005 无法找到 C
  • 离子旋转器未显示

    我用 http 请求填充 Ionic 集合重复列表 但我不想将所有内容直接加载到 DOM 中 因此 我只显示其中一些项目 并在您向下滚动时添加其余项目 为此我实现了无限滚动功能 当我到达页面底部时 它应该显示一个旋转器 但它没有 这些物品至
  • JavaScript:从 JavaScript 调用锚标记的点击事件

    我有一个带有锚标记的页面 在我的 JavaScript 中 我设置HREF锚标记的属性基于一些 if else 条件动态变化 现在我想以编程方式调用锚标记的单击事件 我使用了下面的代码 但没有成功 var proxyImgSrc CostM
  • 如何检查元素的内容是否为空,如果是,则在 jquery 中删除该元素

    我目前正在尝试选择某个 div 内没有内容的任何 h2 元素并将其删除 这是我的 html 代码 div class skipToContainer h2 class vidSkipTo Hello h2 h2 class vidSkipT
  • 获得一次性绑定以适用于 ng-if

    这个问题已经被之前问过 https stackoverflow com questions 23969926 angular lazy one time binding for expressions 但我无法让该解决方案发挥作用 所以我想
  • HTML 和 JavaScript - 将滚动操作从一个元素传递到另一个元素

    假设我有两个 div div div div A scrollable list div 我想让它当光标停在里面时 control并且鼠标滚轮滚动 view将会滚动 无论如何要实现这一目标 好的 快速修复对我有用 即使固定 div 不可滚动
  • 仅在首页加载时使用 cookie 加载 colorbox

    我尝试了来自网络的参考代码 仅在页面加载时加载特定元素一次 这是示例代码
  • PhantomJS 网页内存消耗?

    是否有一种编程方式 因为我想在运行时自动执行 方式来查看网页在通过 PhantomJs 运行时使用了多少内存 我也在使用 casperjs 如果这有帮助的话 我已经搜索了很多但没有找到任何方法 PhantomJs 使用 QtWebKit 因
  • 如何修复 getImageData() 错误画布已被跨源数据污染?

    我的代码在本地主机上运行得很好 但在网站上却不起作用 我从控制台收到此错误 对于这一行 getImageData x y 1 1 data Uncaught SecurityError Failed to execute getImageD
  • `ie9` - contenteditable false 在父级可编辑时不起作用

    我正在尝试制作内容可编辑和不可编辑的容器 用户可以通过 3 种方式使用它 他们可以将内容与non editable 他们可以将内容与editable 他们可以在不选择其中之一的情况下放置内容 可编辑 我正在努力实现以下目标 content
  • JavaScript 中最长的通用前缀

    我正在尝试解决 Leet Code 挑战14 最长公共前缀 https leetcode com problems longest common prefix 编写一个函数来查找字符串数组中最长的公共前缀字符串 如果没有公共前缀 则返回空字
  • 数字和小数的输入掩码

    在测试我的程序后 我发现了以下错误 我在 sqlserver 中的表包含 价格数字 6 2 我的程序的用户输入价格 555 00 就很好了 但是当他输入 555555 时 这是错误的 所以我需要指定掩码 其中尾数是可选的 0 到 999 小
  • 跨浏览器:禁用输入字段的不同行为(文本可以/不能复制)

    我有一个被禁用的输入 html 字段 在某些浏览器 Chrome Edge Internet Explorer 和 Opera 中可以选择并复制文本 但至少在 Firefox 中这是不可能的 您可以通过在不同浏览器中执行以下代码来测试
  • 在 JSP 或 Javascript 中清除浏览器缓存中的图像

    我正在为一所大学开发JSP Web 应用程序 用户页面中显示人员图片 用户注销后如何从网络浏览器缓存中清除这张图片 使用 JSP 或 JavaScript 那是不可能的 最好的选择是完全禁用相关资源的缓存 创建一个filter https
  • 使用 JavaScript onclick 添加表格行

    我正在尝试使用 javascript 添加下面找到的完全相同的元素 我已经尝试了这里找到的所有解决方案 我什至尝试用php echo但没有运气 无需更改任何输入名称或类似内容 只需单击该按钮即可向表中添加另一行 仅此而已 这是该元素 tr

随机推荐

  • 从0到1构建新闻长文本分类系统

    新闻分类系统概述 新闻分类系统 顾名思义 就是对于一片新闻或者是一片文章 进行自动的分类 例如政治 财经 娱乐等等 从技术角度讲 其实属于自然语言处理中比较经典的文本分类问题 当然在一个工业级别的分类系统当中 会遇到各种各样的问题 例如语料
  • 【vulntarget】系列:vulntarget-g 练习WP

    本文仅为学习 vulntarget 在本地环境测试验证 无其它目的 请勿进行未经授权的测试 一 靶场信息 下载地址 百度云链接 链接 https pan baidu com s 1R 9udIuoPavsTI18 lPP3Q pwd ics
  • endl和"\n"的区别

    在C 中 打印字符串时 cout不会自动移到下一行 而想要换行 有两种方式 一种是控制符endl 一种是换行符 n 下面来介绍下两种方式 endl是一个C 符号 表示重起一行 在输出流中插入endl将导致屏幕光标移到下一行开头 C 中还提供
  • 使用带Arduino IDE & WIZ820io的ATmega1284P

    使用带Arduino IDE WIZ820io的ATmega1284P 2013 07 04 Filed under IO模块 and tagged with arduino Arduino IDE atmega1284p RAM问题 W5
  • 解决git push 错误error: src refspec master does not match any. error: failed to push some refs to

    解决git push 错误error src refspec master does not match any error failed to push some refs to 在和远程仓库关联后 我们通过 push 命令将本地仓库的文
  • 装机:MSDT & HEDT 的区别

    MSDT Main Stream Desktop 主流桌面平台 HEDT High End Desktop 高端桌面平台 HEDT平台在很多方面的性能都要比MSDT平台强很多 相对于MSDT平台 HEDT平台通常拥有更多的核心数量 更多的内
  • C#查询ACCESS数据库字段和时间字段

    查询表的所有字段 string Format SELECT FROM 0 TableName 查询表中的一个字段 在ACCESS中将字段用CStr 转换成字符串来判断 string Format SELECT FROM 0 WHERE CS
  • 多协议服务器,多协议远程连接服务器

    多协议远程连接服务器 内容精选 换一换 远程连接Linux云服务器报错 Access denied帐号或密码输入错误 SSH服务端配置了禁止root用户登录的策略 帐号或密码输入错误 检查输入的用户名或密码 Linux云服务器默认用户名ro
  • unity——小球酷跑游戏制作

    课堂课程记录 小球滚动 所有变量与物体名的命名原则都是见名知意 一 创建一个unity项目 二 Create所需3Dobject 1 Player 2 walls 三 添加属性 1 添加在Player上 a 添加Rigidbody组件 b
  • 折半查找

    什么是折半查找 折半查找其实通过字面上的意思就是大致就可以理解为每次查找的时候 选取中间下标的值进行查找 如果找不到 就判断这个要查找的数大于还是小于这个这个中间下标的值 如果大于 就把这个中间值的下标 1给到左边的下标 中间下标 就等于
  • 子域访问计数

    class Solution 利用hash表 对子域名计数 注意对字符串的划分 def subdomainVisits self cpdomains count for domain in cpdomains visits int doma
  • 第十三届蓝桥杯大赛真题PythonB组详解 内含周末献血日记

    前言 今天上午去献血啦 在成都市血液中心 待遇很好 体检通过后先发了一些食物 防止一会饿或者来之前空腹的童鞋 可以看出吃的还是比较不错的 正常的早饭也不会吃那么多 但是泡面的油包不能放 水是甜的加了糖之类的 面包不太好吃 就是纯面包 吃不了
  • 在vue中使用antV-G2展示柱状图

    介绍 G2 是一套基于图形语法理论的可视化底层引擎 以数据驱动 提供图形语法与交互语法 具有高度的易用性和扩展性 使用 G2 你可以无需关注图表各种繁琐的实现细节 一条语句即可使用 Canvas 或 SVG 构建出各种各样的可交互的统计图表
  • overleaf一些技巧(更新中)

    文章目录 前言 格式 技巧 感悟 前言 这种半懂不懂 学不明白的感觉真是太让人着迷了T T 一下来自我在使用overleaf过程中的资料总结 贴出了原地址 找个模板改一改比手撸一篇要快 内容部分来源 LaTeX基本命令使用教程 清晰实例 O
  • javascript之Math

    在javascript中Math是js的内置的对象 其中有很多属性和方法用来操作跟数学相关 属性Math PI Math方法有 Math random 随机数 Math ceil 向上取整 Math floor 向下取整 Math abs
  • 三种排序方法:冒泡排序,选择排序,sort()函数排序

    三种排序方法 冒泡排序 选择排序 sort函数排序 引言 为什么要写呢 因为我怕我忘了 一个寒假过去冒泡排序都不会手写了 其中的冒泡排序和选择排序为C语言实现 而sort函数排序则借助C 实现 并且还可以用sort函数对结构体进行排序 冒泡
  • 一文详细介绍什么是数据标注?

    机器学习和深度学习算法都依赖于数据 为构建可靠的人工智能模型 需要为算法提供结构良好且标注良好的数据 为了让机器学习算法学习如何完成特定任务 我们必须标注它们用于训练的数据 换句话说 标注数据很简单 但并不总是那么容易 幸运的是 我们将通过
  • 第一届世界区块链大会·三点钟峰会(W.B.C)在澳门开幕 万人峰会大咖云集明星嘉年华

    2018年4月23日晚 以 技术重构世界 为主题的第一届世界区块链大会 三点钟峰会 W B C 在中国澳门威尼斯人大酒店隆重开幕 为期三天 大会由世界区块链联合协会首倡 世界区块链大会组委会 三点钟 深创学院主办 深圳大学区块链研究院 银河
  • 解决org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.spring

    从svn上取下来的之前一直在开发的项目 因为项目我是中途接手的 所以同步下来 配置好tomcat 运行的时候报错 Cannot find class com lhzxt dhub MyExceptionHandler for bean wi
  • JavaScript基础(Dom操作)

    目录 一 BOM模型 1 1 BOM可实现功能 二 Window对象的常用属性 2 1 Window对象的常用方法 2 1 1 open 和close 方法 三 History对象 四 Location对象 五 Document对象的常用方