Я пытаюсь создать функцию, которая может редактировать dom по клику, в которую я могу передавать различные элементы, чтобы уменьшить дублирование кода.Однако, когда я передаю идентификатор в виде строки в функции, он не будет захватывать элемент DOM.Однако, если я использую тот же текст в строке, объявленной в функции, это произойдет.Я пробовал консоль, регистрируя выходные данные и используя ту же самую строку, определенную мной, в запросе dom, и это работает, однако переменная, определенная в прототипе функции, не кажется мне необъяснимой.
ex будет работать var x = document.getElementById ('button1'). Style.display = "block";
, но var x = document.getElementById (str1) .style.display =«блок»;не будет, где str берется из заголовка функции, даже если tho str console.logs ("button1");однако если я объявляю переменную r = "button1" внутри функции var x = document.getElementById (r) .style.display = "block";- это будет работать, почему строка передается в функцию по-разному
пример скрипта, иллюстрирующий проблему https://jsfiddle.net/peacefulgoldfish/wpvyu5fr/20/
html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex, nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script
type="text/javascript"
src="/js/lib/dummy.js"
></script>
<link rel="stylesheet" type="text/css" href="/css/result-light.css">
<style type="text/css">
#div1 {
width: 100px;
height: 30px;
background-color: red;
}
#button1{
display: none;
width: 100px;
height: 30px;
background-color:blue;
}
</style>
<!-- TODO: Missing CoffeeScript 2 -->
<script type="text/javascript">
function switchv(){
switchbutton("'block'", "'button1'");
}
function switchbutton(str, str2){
console.log(str2)
r = str2;
var x = document.getElementById(r).style.display="block";
}
</script>
</head>
<body>
<button id="div1" onclick="switchv();">
</button>
<div id="button1">
</div>
<script>
// tell the embed parent frame the height of the content
if (window.parent && window.parent.parent){
window.parent.parent.postMessage(["resultsFrame", {
height: document.body.getBoundingClientRect().height,
slug: ""
}], "*")
}
</script>
</body>
</html>