会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132647个问题
WEB前端全系列/第二阶段:JavaScript编程模块/DOM模型 601楼
WEB前端全系列/第二阶段:JavaScript编程模块/面向对象编程 602楼

<!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>
<body>
  账号<input type="text">
  密码<input type="text">
  <button>提交</button>
  <script>
    let userName = document.getElementsByTagName("input")[0];
    let passWord = document.getElementsByTagName("input")[1];
    let btn = document.getElementsByTagName("button")[0];

    btn.onclick = () => {
      let xhr = new XMLHttpRequest();//创建xhr对象通过XMLHttpRequest构造函数
      
      xhr.onreadystatechange = () => {
        if( xhr.readyState == 4 && xhr.status == 200 ){
          //进了这里证明拿到了数据
          console.log(xhr.responseText);
        }
      }

      let datas = new FormData();
      datas.append("userName",userName.value);
      datas.append("passWord",passWord.value);

      xhr.open("post","http://localhost:3000/index",true);
      
      xhr.send(datas);
    }
    
  </script>
  
</body>
</html>
let express = require("express");
let bodyParser = require("body-parser");
//let multiparty = require("multiparty"); /*引入multiparty模块*/
//需要安装 npm install multiparty --save
let app = express();

app.use(bodyParser.urlencoded({ extended: false }));

app.all("*", function (req, res, next) {
  //解决夸域问题
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
  res.header("X-Powered-By", "3.2.1");
  res.header("Content-Type", "application/json;charset=utf-8");
  next();
});

// app.post("/index", (req, res) => {
//   console.log(req.body);
//   res.send("后台接收成功");
// });
app.post("/index", function (req, res) {
  // let form = new multiparty.Form();
  // form.parse(req, function (err, fields, file) {
  //   console.log(fields);
  //   res.send("数据已接收");
  // });
  console.log(req.body);
  res.send("接收成功!");
});

app.listen(3000, () => {
  console.log("3000链接成功");
});

后端拿不到前端传输过来的数据 老师 帮忙看看

WEB前端全系列/第二阶段:JavaScript编程模块/运算符_数据类型和流程循环语句 603楼
WEB前端全系列/第二阶段:JavaScript编程模块/函数与对象 605楼

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>106.window对象的name属性</title>
</head>
<body>
    <button>跨域传输</button>
<script>
   
    //console.log(num);
    //如果想要获取一个页面内的信息,那么必须先加载
    var but= document.querySelector('button');
    but.onclick=function(){
        var iframe= document.createElement('iframe');
        iframe.src='106中的page.html';//加载保存了信息的页面
        iframe.style.display='none';  //加载过来不显示
        document.body.appendChild(iframe);
        //当iframe加载完毕,意味着window.name的内容已经被赋予完毕
        iframe.onload=function(eve){
            var iframeWindowName=eve.target.contentWindow.name;
            console.log( iframeWindowName);
            console.log(typeof iframeWindowName);
            eval(iframeWindowName);  //解析字符串
            console.log(num);
        }
    }  
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>
    var num=10;
    window.name='var num=10;';
    window.name='var num=[1,2,3];'; //可以是数组
    window.name='var num={age:22};';//对象也可以
    
</script>
</body>
</html>

微信图片_20200512190140.jpg

老师我按视频中的代码敲的,为啥会出现这种结果,这是什么情况,浏览器的版本不同吗???

WEB前端全系列/第二阶段:JavaScript编程模块/面向对象编程 607楼
WEB前端全系列/第二阶段:JavaScript编程模块/运算符_数据类型和流程循环语句 611楼

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>防抖</title>
    <style>
        body {
            height: 4000px;
        }
    </style>
</head>

<body>
    <button>测试闭包</button>
    <!-- 防抖 -->
    <script>
        var btn = document.getElementsByTagName("button")[0];

        function showScrollTop() {
            var scrollTop = document.documentElement.scrollTop;
            console.log(scrollTop);
        }

        function debounce(fn, delay) {
            var timer = null;
            return function() {
                if (timer) {
                    clearTimeout(timer);
                }
                timer = setTimeout(fn, delay);
            }
        }
        result = debounce(showScrollTop, 200);
        window.addEventListener("scroll", result)
            /*  result = print();
             btn.addEventListener('click', result)

             function print() {
                 console.log('我不是闭包');
                 return function() {
                     console.log('我是闭包');
                 }
             } */
    </script>
</body>

</html>

我现在理解一点儿了。它只做一次不是什么事件机制,函数体只做一次的原因。它就是因为闭包才只执行var timer=null 一次的。debounce()说明是这个参数是debounce()函数返回值,而它的返回值就是重复做的闭包的函数。我先是用注释的print()函数试一试,发现即使不触发事件,“我不是闭包”也会打印出来。它可以单独拿出来,就像之前写闭包一样。它执行一次就是因为需要取得返回值函数。而事件绑定的函数是返回值函数,所以能不停执行。

WEB前端全系列/第二阶段:JavaScript编程模块/浏览器模型(BOM) 613楼
WEB前端全系列/第二阶段:JavaScript编程模块/字符串与数组 615楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637