最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

html - Why the JavaScript function doesn't work? - Stack Overflow

programmeradmin2浏览0评论

If you click the button, it should have showed, but it doesn't.

Is any wrong here?

I have written many JavaScript files in this way, and tried many ways like changing the position of JavaScript code anywhere. But all the files I wrote don't work

Thanks in advance!

An instance :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Debug</title>
</head>
<style>
    .debug {
         display : none;
    }
</style>
<body>
<div class = "debug">
    <p>Wele!</p>
</div>
<button class = "show" onclick = "JavaScript : show();">Show</button>
<script type = "text/JavaScript">
    function show() {
        document.querySelector("debug").style.display = "flex";
    }
</script>
</body>
</html>

Thanks to all of you!

If you click the button, it should have showed, but it doesn't.

Is any wrong here?

I have written many JavaScript files in this way, and tried many ways like changing the position of JavaScript code anywhere. But all the files I wrote don't work

Thanks in advance!

An instance :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Debug</title>
</head>
<style>
    .debug {
         display : none;
    }
</style>
<body>
<div class = "debug">
    <p>Wele!</p>
</div>
<button class = "show" onclick = "JavaScript : show();">Show</button>
<script type = "text/JavaScript">
    function show() {
        document.querySelector("debug").style.display = "flex";
    }
</script>
</body>
</html>

Thanks to all of you!

Share Improve this question edited Jun 9, 2018 at 14:51 Jonny0201 asked Jun 9, 2018 at 14:34 Jonny0201Jonny0201 4635 silver badges11 bronze badges 1
  • @VicJordan this question has nothing to do with jQuery's selectors. – Ivan Commented Jun 9, 2018 at 14:44
Add a ment  | 

4 Answers 4

Reset to default 3

About .querySelector()

The Document method querySelector() returns the first Element within the document that matches the specified selector. [...] The selector is a CSS selector string.

- MDN web docs

You should, therefore, put in your code:

document.querySelector(".debug")

  • You can also select HTML elements by their tags, for example, you want to select the first div:

    document.querySelector("div")
    

    document.querySelector("div").style.color = "lightgreen"
    <div>Hello World</div>

  • Imagine you had your own HTML tag: <hello>, then you can select all hello elements with:

    document.querySelector("hello")
    

    document.querySelector("hello").style.color = "lightblue"
    
      
    <hello>Hello World</hello>
    
      


Side note on inline eventListeners

Also in HTML for inline event listener instead of:

<button class = "show" onclick = "JavaScript : show();">Show</button>

you can simply write:

<button class = "show" onclick = "show();">Show</button>

It is remended to use JavaScript to initiate these eventListeners instead of having them inline inside your HTML markup. Use the .addEventListener() method:

document.querySelector(".show").addEventListener('click', show)
                                                    ↑      ↑
                                                  event  function
                                                  type

Back to your code:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Debug</title>
</head>
<style>
    .debug {
        display : none;
    }
</style>
<body>
<div class = "debug">
    <p>Wele!</p>
</div>
<button class ="show">Show</button>
<script type = "text/JavaScript">
    document.querySelector(".show").addEventListener("click", show)
    function show() {
        document.querySelector(".debug").style.display = "flex";
    }
</script>
</body>
</html>

Last thing

Also it's better to keep HTML, JavaScript and CSS all in separate files, for instance:

- index.html
- style.css
- script.js

And call the CSS and JavaScript files in your HTML file with the link (preferably inside <head>) and script (at the bottom of <body>) tags:

<link rel="stylesheet" type="text/css" href="style.css">

And

<script src="script.js"></script>

For class selector you need to add a dot (.) e.g. .debug

Also, in HTML, you can simply have onclick as onclick="show();"

function show() {
  document.querySelector(".debug").style.display = "flex";
}
.debug {
  display: none;
}
<div class="debug">
  <p>Wele!</p>
</div>
<button class="show" onclick="show();">Show</button>

You were not passing class to querySelector. Set ".debug" instead of "debug".

Below is working code:

function show() {
  document.querySelector(".debug").style.display = "flex";
}
.debug {
  display: none;
}
<div class="debug">
  <p>Wele!</p>
</div>
<button class="show" onclick="JavaScript : show();">Show</button>

queryselectors requires . and # for class and ID selector:

querySelector(".debug")
发布评论

评论列表(0)

  1. 暂无评论