javascript - 如何将字符串转换为内部代码?

标签 javascript jquery

这是在我试图弄清楚 jQuery 的工作原理时出现的。我如何声明一个字符串然后将其转换为机器可读。简而言之,我如何放置不带引号的字符串,以便将字符串解析为 document.querySelector,然后在选择器中添加括号。之前,我有 eval(S)(.wrapper).className = "red";

我基本上想实现评论的内容,这是相关代码:

const S = "document.querySelector";
S(".wrapper").className = "red"; 

/* Below is how I want the final result as. */
/* document.querySelector(".wrapper").className = "red" */
html, body {
    max-width: 100%;
    overflow-x: hidden;
    margin: 0;
    padding: 0;
}

.wrapper{
    width: 100%;
    height: 100vh;
    text-align: center;
    top: 50;
    left: 50;
    color: dodgerblue;
}

.red {
    color: red;
}
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Dom.js</title>
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <div class="wrapper">
        <h1>Dom.js</h1>
        <p>Making Dom Manipulation Easier!</p>
    </div>
    <script src="app.js"></script>
</body>

</html>

最佳答案

您可以创建一个返回 document.querySelector(selector)

的函数

const S = (selector) => {
  return document.querySelector(selector)
}

// or 
/*
const S = function(selector) {
  return document.querySelector(selector)
}
*/

S(".wrapper").className = "red";
html,
body {
  max-width: 100%;
  overflow-x: hidden;
  margin: 0;
  padding: 0;
}

.wrapper {
  width: 100%;
  height: 100vh;
  text-align: center;
  top: 50;
  left: 50;
  color: dodgerblue;
}

.red {
  color: red;
}
<div class="wrapper">
  <h1>Dom.js</h1>
  <p>Making Dom Manipulation Easier!</p>
</div>

或者,按照建议 in this post ,不使用函数并保留上下文,使用 bind

var S = document.querySelector.bind(document)

S(".wrapper").className = "red";
html,
body {
  max-width: 100%;
  overflow-x: hidden;
  margin: 0;
  padding: 0;
}

.wrapper {
  width: 100%;
  height: 100vh;
  text-align: center;
  top: 50;
  left: 50;
  color: dodgerblue;
}

.red {
  color: red;
}
<div class="wrapper">
  <h1>Dom.js</h1>
  <p>Making Dom Manipulation Easier!</p>
</div>

关于javascript - 如何将字符串转换为内部代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49927474/

相关文章:

javascript - 如何从描述性对象动态生成类?

javascript - 如何在 AngularJs 中从另一个 Controller 访问一个 Controller

javascript - 表单验证中的文本输出跑出输出消息框

php - json_encode 和 highcharts

asp.net-mvc - 异步 Asp.Net MVC Controller 方法?

javascript - 使用 jQuery.getScript() 赋值后全局变量未定义

javascript - 单击缩略图显示手动定义的图库(花式框)

javascript - 搜索响应式下拉菜单

javascript - 如何计算接近无穷大或 0 的极限?

Javascript touch 事件打破了 iPad 上的垂直滚动