JavaScript知识梳理(一)

JavaScript知识梳理(一)

想想还是需要系统梳理一遍,相比后端我大概更愿意多学习一些前端,慢慢学吧,理论还是完全不够呢。

注意点:在标签上加onclick="functionname()",是不好的做法,用JavaScript污染HTML,且效率低下。(根据实际情况判断)

异步 与 延迟(async defer)

当页面中的脚本彼此独立运行并且不依赖页面上的其他脚本时,可以用async
具有defer属性的所有脚本将按照它们在页面上显示的顺序进行加载,如果您的脚本需要等待解析并且依赖于其他脚本和DOM,请使用defer ,并将它们的相应<script>按执行顺序排列

变量和常量

更多

变量:letvar

var可以在初始化变量后实际使用声明变量,并且该变量仍然可以使用;可以根据需要多次声明同一变量,但我们建议尽量用let

let a = 1;
let randomNumber = Math.floor(Math.random() * 100) + 1;//1-100的随机数

常量:const

const x = document.querySelector('.classname');

浏览器对象

value属性表示输入到文本字段中的当前值。
要更改段落内的文本,需要使用textContent属性。
页面上的每个元素都有一个style属性,该属性本身包含一个对象,该对象的属性包含应用于该元素的所有内联CSS样式。这使我们能够使用JavaScript在元素上动态设置新的CSS样式。

classname.value = 'Hello';
classname.textContent = 'Where is my paragraph?';
classname.style.backgroundColor = 'yellow';

例:
猜数字游戏

<div class="resultParas">
  <p class="guesses"></p>
  <p class="lastResult"></p>
  <p class="lowOrHi"></p>
</div>

<label for="guessField">Enter a guess: </label><input type="text" id="guessField" class="guessField">
<input type="submit" value="Submit guess" class="guessSubmit">
guessField.focus();//,<input>在页面加载后立即将文本光标自动置于文本字段中,直接输入,不必先单击

let randomNumber = Math.floor(Math.random() * 100) + 1;

const guesses = document.querySelector('.guesses');
const lastResult = document.querySelector('.lastResult');
const lowOrHi = document.querySelector('.lowOrHi');

const guessSubmit = document.querySelector('.guessSubmit');
const guessField = document.querySelector('.guessField');

let guessCount = 1;
let resetButton;


function checkGuess() {
  let userGuess = Number(guessField.value);//确保是数字
  if (guessCount === 1) {
    guesses.textContent = 'Previous guesses: ';//段落文本内容
  }
  guesses.textContent += userGuess + ' ';

  if (userGuess === randomNumber) {
    lastResult.textContent = 'Congratulations! You got it right!';
    lastResult.style.backgroundColor = 'green';//修改CSS样式
    lowOrHi.textContent = '';//清除提示文本
    setGameOver();//函数
  } else if (guessCount === 10) {
    lastResult.textContent = '!!!GAME OVER!!!';
    setGameOver();
  } else {
    lastResult.textContent = 'Wrong!';
    lastResult.style.backgroundColor = 'red';
    if(userGuess < randomNumber) {
      lowOrHi.textContent = 'Last guess was too low!';
    } else if(userGuess > randomNumber) {
      lowOrHi.textContent = 'Last guess was too high!';
    }
  }

  guessCount++;
  guessField.value = '';
  guessField.focus();
  guessSubmit.addEventListener('click', checkGuess);  //事件侦听器
}

function setGameOver() {
  guessField.disabled = true;//禁用
  guessSubmit.disabled = true;
  resetButton = document.createElement('button');//生成按钮元素
  resetButton.textContent = 'Start new game';
  document.body.append(resetButton);
  resetButton.addEventListener('click', resetGame);
}

function resetGame() {
  guessCount = 1;

  const resetParas = document.querySelectorAll('.resultParas p');
  for (let i = 0 ; i < resetParas.length ; i++) {
    resetParas[i].textContent = '';
  }

  resetButton.parentNode.removeChild(resetButton);//删除重置按钮

  guessField.disabled = false;
  guessSubmit.disabled = false;
  guessField.value = '';
  guessField.focus();

  lastResult.style.backgroundColor = 'white';

  randomNumber = Math.floor(Math.random() * 100) + 1;
}

错误

【语法错误】

TypeError:xxx is not a function

拼写错误;正在调用该方法的对象没有此功能;具有相同名称的属性和函数

TypeError:xxx is null

console.log(xxx)是一个很有用的调试功能

SyntaxError: missing ; before statement//缺少’;’
SyntaxError: missing ) after argument list//缺少’)’
SyntaxError: missing : after property id

【逻辑错误】

查看更多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值