<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--script标签内,写JavaScript代码,可以放在head标签里,也可以放在body标签里-->
<script>
<!--弹窗,打开页面时弹出一个窗口,并显示有hello,world-->
alert('hello,world');
</script>
</head>
<body>
</body>
</html>

方式二:新建一个js文件,在HTML中连接该文件也可以实现,就像css一样和HTML分开

注意script标签必须是成对出现,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--Javascript严格区分大小写-->
<script>
//单行与多行注释与Java中注释的方式一样
/*1.定义变量 变量类型 变量名 = 变量值;*/
var score =100;//这里不写分号也没事
var name = "twq";//这里不写var也没事,就算不写变量名都可以,是不感觉可以随心所欲了
if(score>60 && score <70){
alert('小子,你很危险呀');
}else if(score > 70 && score < 80){
alert('革命尚未成功,同学 仍需努力呀!!');
}else{
alert('不要骄傲哦!');
}
</script>
</head>
<body>
</body>
</html>



123//整数123
123.1//浮点数123.1
1.123e3//科学计数法
-99//负数
NaN//not a number
Infinity//表示无限大


须知:



如果数组下标越界会报undefined

<script>
console.log((1/3)===(1-2/3));
console.log(Math.abs(1/3-(1-2/3))<0.00000001);
//保证代码的可读性,尽量使用[]
var arr=[1,2,3,4,5,'hello',null,true];
new Array(1,12,3,4,5,'hello');
var person ={
name:"Twq",
age:23,
tags:['js','java','web','...']
}
</script>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
/*前提是IDEA需要设置支持ES6语法
*'use strict'严格检查模式,预防Javascript的随意性导致产生的一些问题如:
* ①定义变量不写变量类型在没有写严格检查时不会报错,但是加上这严格检查之后就会报错
* 必须要写在JS的第一行
* 局部变量建议都使用let去定义 */
'use strict';
/*let是块作用域,就会好比在for循环里用let定义了一个块变量
在循环的外部则无法使用该变量,var是函数作用域,在循环里面定义的
变量在循环外面也可以可以访问*/
let i = 1;
</script>
</head>
<body>
</body>
</html>
④\41 Ascll字符


<script>
//tab 上面 esc下面
let name = "Twq";
var msg =`你好呀,${name}`//在Java中连接两个字符串用加号,二JS可以使用$符号连接
</script>







注意:假如给arr.length赋值,数组大小就会发生变化,如果赋值过小,元素就会丢失

在数组里字符串的1和数字1是不同的





注意:concat()并没有修改原来的数组的值,只是会返回一个新的数组







<script>
var map = new Map([['tom',100],['jack',900],['haha',80]])
console.log(map.get('jack'))
map.set('admin',90);//新增或修改
map.delete('tom');//删除
for(let x of map){
console.log(x)
}
</script>

<script>
var set = new Set([1,1,1,3]);
set.add(2);//添加一个元素
set.delete(3);//删除一个元素
for(let x of set){
console.log(x)
}
console.log(set.has(1))//集合中是否包含1
</script>

<script>
function abs(x){
if(x >= 0){
return x;
}
else{
return -x;
}
}
</script>

一旦执行到return代表函数结束,返回结果
如果没有执行return,函数执行完也会返回结果,结果就是undefined
var abs = function(x){
if(x >= 0){
return x;
}
else{
return -x;
}
}
<script>
var abs = function(x){
if(typeof x !== 'number'){//如果参数x的类型不是一个数
//手动定义异常
throw 'Not a number';
}
if(x >= 0){
return x;
}
else{
return -x;
}
}
</script>

②假设参入的参数有多个
可以使用arguments关键词
arguments:代表传递进来的所有参数,是一个数组
<script>
var abs = function(x){
if(typeof x !== 'number'){//如果参数x的类型不是一个数
//手动定义异常
throw 'Not a number';
}
for(let i =0; i<arguments.length;i++){
console.log(arguments[i])
}
// if(x >= 0){
// return x;
// }
// else{
// return -x;
// }
}
</script>

③使用reset获取当前除已定义的参数以外的所有参数
<script>
var abs = function(a,b,c,...rest){
console.log("a->"+a);
console.log("b->"+b);
console.log("c->"+c);
console.log(rest);
}
</script>


<script>
'use strict'
function twq(){
var x = 1;
x = x+1;
}
function twq1(){
var x = x +1;
}
</script>
<script>
'use strict'
function twq(){
var x = 1;
function twq1(){
var y = x +1;
}
var z = y +1;
}
</script>

<script>
'use strict'
function twq(){
var x = 1;
function twq(){
var x = 'A';
console.log('inner'+x);
}
console.log('outer'+x);
twq();
}
twq();
</script>

<script>
'use strict'
function twq(){
var x = 'x' + y;
console.log(x);
var y = 'y';
}
twq();
</script>

由此结果可知JS执行引擎,自动提升了y的声明,但是不会提升y的赋值
<script>
'use strict'
var x = 'xxx';
alert(x);
alert(window.x);
</script>

<script>
'use strict'
function aaa(){
for (var i = 0; i < 100; i++) {
console.log(i);
}
console.log(i+1);
}
</script>

let关键字,解决局部作用域冲突的问题
<script>
'use strict'
function aaa(){
for (let i = 0; i < 100; i++) {
console.log(i);
}
console.log(i+1);
}
</script>

<script>
'use strict'
var PI = '3.14';
console.log(PI);
PI = '213';//可以改变这个值
console.log(PI)
</script>

在ES6引入了常量关键字const
<script>
'use strict'
const PI = '3.14';
console.log(PI);
PI = '213';//可以改变这个值
console.log(PI);
</script>

<script>
'use strict'
var person = {
name:'唐',
birth:1999,
//方法
age:function (){
//今年-出生的年 为它的年龄
var now = new Date().getFullYear();//获取当前的年份
return now - this.birth;
}
}
</script>

②方式二:
<script>
'use strict'
function getAge(){
//今年-出生的年 为它的年龄
var now = new Date().getFullYear();
return now - this.birth;
}
var person = {
name:'唐',
birth:1999,
//方法
age:getAge//这里只需要将方法名天在这里即可
}
//kuangshen.age() ok
//getAge() NaN 直接调用getAge()其内部的this指的是window
</script>





格式:
<script>
var user={
name:'twq',
age:3,
sex:'男'
}
//对象转化为JSON字符串{}
var jsonUser = JSON.stringify(user);
//JSON字符串转化为对象 参数为JSON字符串
var obj = JSON.parse('{\"name\":\"twq\",\"age\":3,\"sex\":\"男\"}');
</script>

<script>
var student={
name:'twq',
age:23,
run:function (){
console.log(this.name+' is running.....')
}
}
var xiaoming={
name:'xiaoming'
}
xiaoming.__proto__=student;
</script>

<script>
class Student{
constructor(name) {//构造器
this.name =name;
}
hello(){
alert('hello')
}
}
var st1 = new Student("小明");
var st2 = new Student("小红");
</script>

<script>
class Student{
constructor(name) {//构造器
this.name =name;
}
hello(){
alert('hello')
}
}
var st1 = new Student("小明");
var st2 = new Student("小红");
class primeStudent extends Student{
constructor(name,grade) {
super(name);
this.grade = grade;
}
myGrade(){
alert('我是一名小学生');
}
}
var st3 = new primeStudent("小刚",23);
</script>


本质:查看对象原型



大多数时候,我们不会使用navigator对象,因为会被人为修改

host: "localhost:63342"
href:"http://localhost:63342/Java02/JavaScript/tang/%E5%86%85%E9%83%A8%E5%AF%B9%E8%B1%A1/class%E7%BB%A7%E6%89%BF.html?_ijt=sibusl004num53m4li95rdnuvg"
protocol: "http:"
reload: ƒ reload()//刷新页面
//设置新的地址
location.assign('https://www.cnblogs.com/twq46/')

获取具体的文档树节点
<body>
<dl id="app">
<dt>java</dt>
<dd>javaSE</dd>
<dd>javaEE</dd>
</dl>
<script>
var dl = document.getElementById('app');
</script>
</body>

获取cookie

劫持cookie原理:对于有病毒的网站,可能就会存在获取你的cookie的JS代码,一旦他们获得你的cookie值,就可以登录的你的账号进行操作,比如你在登录淘宝账号之后,天猫网站也会自动登录上,这就是因为天猫会获取你登录淘宝账号的cookie值,从而用这些信息自动去登录天猫网站
服务器端可以设置cookie:httpOnly,就可以保证信息安全



<body>
<div id="father">
<h1>标题</h1>
<p id="p1">段落1</p>
<p class="p2">段落2</p>
</div>
<script>
var h1 = document.getElementsByTagName('h1');//获取标签选择器
var p1 = document.getElementById('p1');//获取id选择器
var p2 = document.getElementsByClassName('p2');//获取类选择器
var father = document.getElementById('father');//获取id选择器
console.log(father.children);//获取父节点下的所有子节点
// console.log(father.firstChild);//获取父节点下的第一个节点
// console.log(father.lastChild);//获取父节点下的最后一个节点
</script>
</body>

<body>
<div id="div">
</div>
<script>
var div1 = document.getElementById('div');
console.log(div1);
div1.innertext='123'//修改网页内容的值
</script>
</body>
div1.innerHTML='<strong>123</strong>'


操作JS:属性使用字符串包裹


还可通过数组来删除

注意:删除多个节点的时候,children是在时刻变化的,删除节点的时候一定要注意
<body>
<p id="js">TWQ</p>
<div id="div">
<p id="'se">javaSE</p>
<p id="ee">JavaEE</p>
<p id="me">javaME</p>
</div>
<script>
var js = document.getElementById('js');
var div = document.getElementById('div');
</script>
</body>

<body>
<!--<p id="js">TWQ</p>-->
<div id="div">
<p id="'se">javaSE</p>
<p id="ee">JavaEE</p>
<p id="me">javaME</p>
</div>
<script>
// var js = document.getElementById('js');
var div = document.getElementById('div');
var newp = document.createElement('p')//创建一个p标签
newp.id = 'newp';//设置id选择器的名称,等价于<p id="newp"></p>
newp.innerText="Twqwq123"//等价于<p id="newp">Twqwq123</p>
</script>
</body>

目的:实现创建一个标签自带属性和值,并加入到div标签中
<body>
<div id="div">
<p id="'se">javaSE</p>
<p id="ee">JavaEE</p>
<p id="me">javaME</p>
</div>
<script>
var div = document.getElementById('div');
//创建一个带值的标签
var myScript = document.createElement('script');
myScript.setAttribute('type','text/javascript');
</script>
</body>

<body>
<p>
<span>用户名:</span><input type="text" id="username">
</p>
<script>
var input_text = document.getElementById('username');
//得到输入框的值
input_text.value
</script>
</body>

<body>
<p>
<span>用户名:</span><input type="text" id="username">
</p>
<script>
var input_text = document.getElementById('username');
//得到输入框的值
input_text.value
// //修改输入框的值
input_text.value='124';
</script>
</body>

<body>
<p>
<span>用户名:</span><input type="text" id="username">
</p>
<p>
<span>性别:</span>
<input type="radio" name="sex" value="man" id="boy">男
<input type="radio" name="sex" value="girl" id="women">女
</p>
<script>
var input_text = document.getElementById('username');
var boy_radio = document.getElementById('boy');
var girl_radio = document.getElementById('women');
//得到输入框的值
input_text.value
//对于单选框,多选框等等固定的值,boy_radio.value只能取到当前的值
boy_radio.checked;//查看返回的结果,是否为true,如果为true,则被选中
girl_radio.checked = true;//赋值
</script>
</body>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- MD5工具类-->
<script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js"></script>
</head>
<body>
<form action="#" method="post">
<p>
<span>用户名:</span><input type="text" id="username" name="username">
</p>
<p>
<span>密码:</span><input type="password" id="password" name="password">
</p>
<!-- 绑定事件 onclick 被点击-->
<button type="submit" onclick="aaa()">提交</button>
</form>
<script>
function aaa(){
var uname = document.getElementById('username');
var pwd = document.getElementById('password');
console.log(uname.value);
console.log(pwd.value);
//MD5算法,可对自己提交的密码进行加密,防止别人抓包的的时候抓到你提交的用户名及密码信息
pwd.value = md5(pwd.value);
console.log(pwd.value)
}
</script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- MD5工具类-->
<script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js"></script>
</head>
<body>
<!--
表单绑定提交事件
onsubmit:绑定一个提交检测的函数,true,false
将这个结果返回给表单,使用onsubmit接收
-->
<form action="https://www.cnblogs.com/" method="post" onsubmit="return aaa()">
<p>
<span>用户名:</span><input type="text" id="username" name="username">
</p>
<p>
<span>密码:</span><input type="password" id="input_password" >
</p>
<input type="hidden" id="md5_password" name="password">
<!--绑定事件 onclick 按钮被点击时-->
<button type="submit">提交</button>
</form>
<script>
function aaa(){
alert(1);
var uname = document.getElementById('username');
var pwd = document.getElementById('input_password');
var md5pwd = document.getElementById('md5_password');
md5pwd.value = md5(pwd.value);
return true;//如果改为true,点击提交之后就可以跳转到博客园界面
}
</script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- 方式一:线上导入的方式-->
<!-- <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>-->
<!-- 方式二:可以再jQuery官网下载
若在官网点击下载仅是在网页打开了一个文档,并没有实现文档的下载
可以按 alt + 鼠标左键或 option + 左键即可以文档的形式下载,然后导入项目中-->
<script src="lib/jquery-3.6.0.min.js"></script>
</head>
<body>
<a href="" id="text_jquery">点我</a>
<script>
document.getElementById('id');
//选择器就是css的选择器
$('#text_jquery').click(function (){
alert('你好,jQuery')
})
</script>
</body>
</html>


<script>
//jQuery css中的选择器它全都能使用
$('p').click();//标签选择器
$('#id1').click();//id选择器
$('.class1').click();//class类选择器
</script>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="lib/jquery-3.6.0.js"></script>
<style>
#divMove{
width: 500px;
height: 500px;
border: 1px solid red;
}
</style>
</head>
<body>
<!--要求:获取鼠标当前的一个坐标-->
mouse:<span id="mouseMove"></span>
<div id="divMove">
在这里点击试试
</div>
<script>
//当网页元素加载完毕之后,响应事件
//document:当前网页
//ready:网页加载完之后要做的事
// $(document).ready(function (){
//
// })
//上诉可简化为
$(function (){
$('#divMove').mousemove(function (e){
$('#mouseMove').text('x:'+e.pageX+'y:'+e.pageY)
})
});
</script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="lib/jquery-3.6.0.js"></script>
</head>
<body>
<ul id="test-ul">
<li class="js">javaScript</li>
<li name="python">python</li>
</ul>
<script>
$('#test-ul li[name=python]').text();//获取div标签下的ul里li的name=python的值
$('#test-ul li[name=python]').text('设置的值');//修改div标签下的ul里li的name=python的值
//css的操作
$('#test-ul li[name=python]').css({"color","red"})
</script>
</body>
</html>

我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan
一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su
TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是
我看到有关未找到文件min.map的错误消息:GETjQuery'sjquery-1.10.2.min.mapistriggeringa404(NotFound)截图这是从哪里来的? 最佳答案 如果ChromeDevTools报告.map文件的404(可能是jquery-1.10.2.min.map、jquery.min.map或jquery-2.0.3.min.map,但任何事情都可能发生)首先要知道的是,这仅在使用DevTools时才会请求。您的用户不会遇到此404。现在您可以修复此问题或禁用sourcemap功能。修复:获取文
我有一个用Rails3编写的站点。我的帖子模型有一个名为“内容”的文本列。在帖子面板中,html表单使用tinymce将“content”列设置为textarea字段。在首页,因为使用了tinymce,post.html.erb的代码需要用这样的原始方法来实现。.好的,现在如果我关闭浏览器javascript,这个文本区域可以在没有tinymce的情况下输入,也许用户会输入任何xss,比如alert('xss');.我的前台会显示那个警告框。我尝试sanitize(@post.content)在posts_controller中,但sanitize方法将相互过滤tinymce样式。例如
出于某种原因,我必须为Firefox禁用javascript(手动,我们按照提到的步骤执行http://support.mozilla.org/en-US/kb/javascript-settings-for-interactive-web-pages#w_enabling-and-disabling-javascript)。使用Ruby的SeleniumWebDriver如何实现这一点? 最佳答案 是的,这是可能的。而是另一种方式。您首先需要查看链接Selenium::WebDriver::Firefox::Profile#[]=
我是Ruby和Watir-Webdriver的新手。我有一套用VBScript编写的站点自动化程序,我想将其转换为Ruby/Watir,因为我现在必须支持Firefox。我发现我真的很喜欢Ruby,而且我正在研究Watir,但我已经花了一周时间试图让Webdriver显示我的登录屏幕。该站点以带有“我同意”区域的“警告屏幕”开头。用户点击我同意并显示登录屏幕。我需要单击该区域以显示登录屏幕(这是同一页面,实际上是一个表单,只是隐藏了)。我整天都在用VBScript这样做:objExplorer.Document.GetElementsByTagName("area")(0).click
🎉精彩专栏推荐💭文末获取联系✍️作者简介:一个热爱把逻辑思维转变为代码的技术博主💂作者主页:【主页——🚀获取更多优质源码】🎓web前端期末大作业:【📚毕设项目精品实战案例(1000套)】🧡程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作(110套)】🌎超炫酷的Echarts大屏可视化源码:【🔰Echarts大屏展示大数据平台可视化(150套)】🔖HTML+CSS+JS实例代码:【🗂️5000套HTML+CSS+JS实例代码(炫酷代码)继续更新中…】🎁免费且实用的WEB前端学习指南:【📂web前端零基础到高级学习视频教程120G干货分享】🥇关于作者:💬历任研发工程师,技术组长,教学总监;
开门见山|拉取镜像dockerpullelasticsearch:7.16.1|配置存放的目录#存放配置文件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/config#存放数据的文件夹mkdir-p/opt/docker/elasticsearch/node-1/data#存放运行日志的文件夹mkdir-p/opt/docker/elasticsearch/node-1/log#存放IK分词插件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/plugins若你使用了moba,直接右键新建即可如上图所示依次类推创建