这是在我试图弄清楚 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/