JavaScript怎么解决问题

img


JavaScript将搜集到的网站搜索用一组单选按扭显现出来让用户选择,然后可以提供文本输入框和按钮让用户提交请求

我们使用了HTML的表单元素来创建一组单选按钮,每个按钮对应一个搜索引擎。然后我们添加了一个文本输入框和提交按钮,让用户可以输入搜索关键字并提交搜索请求。
在JavaScript方面,我们定义了一个submitRequest()函数,该函数从用户的选择和输入获取相关信息,并将其拼接成一个搜索链接(其中将搜索关键字进行了URL编码),最后通过调用window.location.href来打开该链接,实现搜索功能。
需要注意的是,这里使用了一个相对简单的方式在当前窗口中打开搜索结果。在实际开发中,我们可能需要使用更复杂的技术来实现预览、异步加载等功能,以提升用户体验


<html>
  <head>
    <title>搜索</title>
  </head>
  <body>
    <h1>请选择您要搜索的网站:</h1>
    <form>
      <input type="radio" name="website" value="https://www.google.com/">Google<br>
      <input type="radio" name="website" value="https://www.baidu.com/">百度<br>
      <input type="radio" name="website" value="https://cn.bing.com/">必应<br>
      <br>
      <label for="search">请输入您要搜索的内容:</label>
      <input type="text" id="search" name="search">
      <button onclick="submitRequest()">提交</button>
    </form>
    
    <script>
      function submitRequest() {
        var website = document.querySelector('input[name="website"]:checked').value;
        var search = document.getElementById("search").value;
        var url = website + "search?q=" + encodeURIComponent(search);
        window.location.href = url;
      }
    </script>
  </body>
</html>
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/733193
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:JavaScript基础教程 用户登录明文传输密码问题如何解决
  • 同时,你还可以查看手册:javascript 静态属性和静态方法 中的内容
  • 除此之外, 这篇博客: 【JavaScript面试题】经典JavaScript面试题,快来看一看你是不是一名合格的程序员中的 经典JavaScript面试题,快来看一看你是不是一名合格的程序员 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

  • 话不多说,先看题,这段代码会在控制台打印出来什么结果?

    function fun(n, o) {
        console.log(o);
        return {
            fun: function(m) {
                return fun(m, n);
            }
        }
    }
    
    var a = fun(0);a.fun(1);a.fun(2);a.fun(3);
    var b = fun(0).fun(1).fun(2).fun(3);
    var c = fun(0).fun(1);c.fun(2);c.fun(3);
    

    倒计时3 ~ 2 ~ 1 ~
    下面公布答案:
    在这里插入图片描述
    不知道小伙伴们是不是都做对了?
    小伙伴们刚拿到这道题的时候肯定是一头雾水。
    这个返回值是个什么啊?
    为什么函数在调用的时候就传了一个参数?
    下面一一为大家解答。

    我们先整理一下代码格式

    function fun(n, o) {
        console.log(o);
        return {
            fun: function(m) {
                return fun(m, n);
            }
        }
    }
    
    var a = fun(0);
    a.fun(1);
    a.fun(2);
    a.fun(3);
    var b = fun(0).fun(1).fun(2).fun(3);
    var c = fun(0).fun(1);
    c.fun(2);
    c.fun(3);
    

    我们先看这个函数,
    每次在调用的时候在控制台打印一遍“o”,
    然后返回一个对象
    {fun:function(m){return fun(m,n)} }
    这个对象的Keyfun
    Valuefunction(m){return fun(m,n)}

    那么问题来了,
    在最开始调用的时候,
    fun(0),只传入了一个参数,这个参数给了谁呢,
    我们不妨写个小demo来看一下。
    在这里插入图片描述
    我们发现在只传入一个参数的时候,js会默认传递给第一个,第二个不会赋值。


    我们先看第一行
    var a = fun(0);a.fun(1);a.fun(2);a.fun(3);
    var a = fun(0)
    fun(0);可以写成

    function fun(0, o) {
        console.log(o);
        return {
            fun: function(m) {
                return fun(m, 0);
            }
        }
    }
    

    会在一开始打印一遍"o",这个时候"o"是undefined
    并返回一个键值对
    {fun:function(m){return fun(m,0)}}
    所以这个时时候a就是这个键值对。

    当调用a.fun(1);的时候
    就相当于找到a这个对象找到key值是fun的Key,传入Value值1,此时这个键值对变成
    {fun: fun(1,0)}}
    就相当于调用了fun(1,0)
    n = 1
    o = 0
    这时会先执行console.log(o);
    在控制台打印一个0
    并返回一个键值对
    {fun:function(m){return fun(m,1)}}

    当调用a.fun(2);的时候
    就相当于找到a这个对象找到key值是fun的Key,传入Value值2,此时这个键值对变成
    {fun: fun(2,0)}}
    就相当于调用了fun(1,0)
    n = 2
    o = 0
    这时会先执行console.log(o);
    在控制台打印一个0
    并返回一个键值对
    {fun:function(m){return fun(m,2)}}

    当调用a.fun(3);的时候
    就相当于找到a这个对象找到key值是fun的Key,传入Value值3,此时这个键值对变成
    {fun: fun(3,0)}}
    就相当于调用了fun(1,0)
    n = 3
    o = 0
    这时会先执行console.log(o);
    在控制台打印一个0
    并返回一个键值对
    {fun:function(m){return fun(m,3)}}

    所以:
    var a = fun(0);a.fun(1);a.fun(2);a.fun(3);这一行会在控制台打印出
    undefined
    0
    0
    0


    接下来,
    我们开始看b,
    我们把b拆分,然后分别从
    fun(0);
    fun(0).fun(1);
    fun(0).fun(1).fun(2);
    fun(0).fun(1).fun(2).fun(3);

    依次分析:

    var b = fun(0)
    先会执行console.log(o);
    这个时候"o"还没有值
    会打印出undefined
    然后返回一个键值对
    {fun:function(m){return fun(m,0)}}
    这就相当于
    var b = {fun:function(m){return fun(m,0)}};

    var b = fun(0).fun(1)
    相当于{fun:function(1){return fun(1,0)}}
    fun(1,0)
    这时
    n = 1
    o = 0
    会先执行console.log(o);
    在控制台打印一个0
    并返回一个键值对
    {fun:function(m){return fun(m,1)}}
    此时
    var b = {fun:function(m){return fun(m,1)}};

    var b = fun(0).fun(1).fun(2)
    相当于{fun:function(2){return fun(2,1)}}
    fun(2,1)
    这时
    n = 2
    o = 1
    会先执行console.log(o);
    在控制台打印一个1
    并返回一个键值对
    {fun:function(m){return fun(m,2)}}
    此时
    var b = {fun:function(m){return fun(m,2)}};

    var b = fun(0).fun(1).fun(2).fun(3)
    相当于{fun:function(3){return fun(3,2)}}
    fun(3,2)
    这时
    n = 3
    o = 2
    会先执行console.log(o);
    在控制台打印一个2
    并返回一个键值对
    {fun:function(m){return fun(m,3)}}
    此时
    var b = {fun:function(m){return fun(m,3)}};

    所以:
    var b = fun(0).fun(1).fun(2).fun(3);这一行会在控制台打印出
    undefined
    0
    1
    2


    最后
    我们开始看c
    var c = fun(0).fun(1);
    这个前面已经分析过
    会在控制台分别打印
    undefined
    0

    这时
    var c = {fun:function(m){return fun(m,1)}};

    c.fun(2);
    相当于{fun:function(2){return fun(2,1)}}
    fun(2,1)
    这时
    n = 2
    o = 1
    会先执行console.log(o);
    在控制台打印一个1
    并返回一个键值对
    {fun:function(m){return fun(m,2)}}

    c.fun(3);
    相当于{fun:function(3){return fun(3,1)}}
    fun(3,1)
    这时
    n = 3
    o = 1
    会先执行console.log(o);
    在控制台打印一个1
    并返回一个键值对
    {fun:function(m){return fun(m,3)}}

    所以:
    var c = fun(0).fun(1);c.fun(2);c.fun(3);这一行会在控制台打印出
    undefined
    0
    1
    1

  • 您还可以看一下 徐照兴老师的JavaScript编程入门实战精讲课程中的 JavaScript 算术运算符与赋值运算符小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    使用JavaScript实现网页搜索功能

    首先,在HTML中添加有单选按钮、文本输入框和按钮的搜索表单。在单选按钮中,每个选项代表了不同的搜索内容,例如“搜索标题”、“搜索作者”、“搜索日期”等。在文本输入框中,用户可以输入关键字。代码如下:

    <form id="searchForm">
      <fieldset>
        <legend>搜索</legend>
        <label>搜索标题</label>
        <input type="radio" name="type" value="title" checked>
        <label>搜索作者</label>
        <input type="radio" name="type" value="author">
        <label>搜索日期</label>
        <input type="radio" name="type" value="date">
        <br>
        <input type="text" name="keyword">
        <button type="button" onclick="search()">搜索</button>
      </fieldset>
    </form>
    

    接着,在JavaScript中定义search函数,该函数获取用户输入的搜索关键字和搜索内容,并进行数据的查询。查询的数据可以是内部数据,也可以是从后端API获取的数据。下面是一个使用内部数据的示例:

    const data = [
      {title: "JavaScript入门教程", author: "Alice", date: "2021-01-01"},
      {title: "HTML5实战", author: "Bob", date: "2021-01-02"},
      {title: "CSS3高级编程", author: "Charlie", date: "2021-01-03"},
      {title: "Vue.js开发实战", author: "David", date: "2021-01-04"},
      {title: "React全栈开发", author: "Edward", date: "2021-01-05"},
    ];
    
    function search() {
      const form = document.querySelector('#searchForm');
      const type = form.elements.type.value; // 获取搜索类型
      const keyword = form.elements.keyword.value; // 获取搜索关键字
    
      // 根据搜索类型进行数据过滤
      const filteredData = data.filter(item => {
        if (type === 'title') {
          return item.title.includes(keyword);
        } else if (type === 'author') {
          return item.author.includes(keyword);
        } else if (type === 'date') {
          return item.date.includes(keyword);
        }
      });
    
      // 输出结果
      console.log(filteredData);
    }
    

    上述代码首先通过querySelector方法获取搜索表单,再通过表单元素的name属性和value属性获取用户选择的搜索类型和关键字。然后通过filter方法进行数据过滤,根据选择的搜索类型和关键字对数据进行筛选。最后将筛选后的结果输出到控制台中。

    如果想要将搜索结果显示在网页上,可以使用DOM操作将结果显示在指定的位置上。例如,在HTML中添加一个用于显示搜索结果的<ul>元素:

    <ul id="searchResult"></ul>
    

    在JavaScript中修改search函数的代码,在处理完数据查询之后,将结果显示在<ul>元素中:

    function search() {
      const form = document.querySelector('#searchForm');
      const type = form.elements.type.value; // 获取搜索类型
      const keyword = form.elements.keyword.value; // 获取搜索关键字
      const ul = document.querySelector('#searchResult'); // 获取用于显示搜索结果的<ul>元素
      ul.innerHTML = ''; // 首先清空搜索结果
    
      // 根据搜索类型进行数据过滤
      const filteredData = data.filter(item => {
        if (type === 'title') {
          return item.title.includes(keyword);
        } else if (type === 'author') {
          return item.author.includes(keyword);
        } else if (type === 'date') {
          return item.date.includes(keyword);
        }
      });
    
      // 将搜索结果动态地创建为<li>元素,并添加到<ul>元素中
      filteredData.forEach(item => {
        const li = document.createElement('li');
        li.textContent = item.title;
        ul.appendChild(li);
      });
    }
    

    上述代码首先获取用于显示搜索结果的<ul>元素,并清空搜索结果。然后通过forEach方法对搜索结果进行遍历,并动态地创建每个搜索结果对应的<li>元素。最后将创建的<li>元素添加到<ul>元素中。

    至此,就实现了一个可以在网页上搜索数据的功能。可以根据实际需求对这个功能进行修改和扩展。其中用到了HTML、CSS、JavaScript中的相关知识点,例如表单、变量、函数、数组、DOM操作等。