-
慕后森
一种更简单的处理方法是将故事的每个段落存储在一个数组中,然后使用您的计数器从数组项中提取故事的一部分,其索引与您的计数器相匹配。然后,您无需进行任何if/else测试。笔记:该style标签所属的head文件,而不是部分body。标题标签(h1、h2、h3等)只能用于在文档中创建部分。因此,您不能有第 3 节 ( h3),除非您已经有第 1 节和第 2 节 ( h1, h2)。不要用 覆盖显示区域的内容 .innerHTML,只需设置一个元素来保存文本并仅用 更新文本.textContent。始终缩进您的代码,这将使其更具可读性并更容易发现错误。最后,HTML、CSS 和 JavaScript 在标准开始发挥作用之前有很长的生命周期,因此您今天看到的很多(我的意思是很多)代码是由没有花时间学习如何使用的人创建的以现代标准和方法论来编写这些语言。许多人只是复制/粘贴其他人似乎有效的代码,而没有意识到他们使用的代码不是正确的方法。事实上,许多大学教授并不精通这些主题,也教授不好的做法。到目前为止,您做得很好,但请查看我个人资料中的链接对于我写过的几个主题,这将使您走上良好的学习道路。(PS - 自从它被发明以来,我一直在编码和教授所有这些东西。)保持良好的工作!<html><head> <title>The Devil's Number</title> <style> @import url('https://fonts.googleapis.com/css?family=Mansalva&display=swap'); *{ font-family: 'Mansalva', cursive; margin:0; } body, html{ width:100%; height:100%; } #bodyDiv{ width:100%; height:100%; position:absolute; text-align:center; } h2{ position:absolute; transform:translate(-50%,-50%); top:50%; left:50%; color:#ffffff; } h1{ color:#ff0000; font-size:50px; text-shadow: rgb(0, 0, 0) 3px 0px 0px, rgb(0, 0, 0) 2.83487px 0.981584px 0px, rgb(0, 0, 0) 2.35766px 1.85511px 0px, rgb(0, 0, 0) 1.62091px 2.52441px 0px, rgb(0, 0, 0) 0.705713px 2.91581px 0px, rgb(0, 0, 0) -0.287171px 2.98622px 0px, rgb(0, 0, 0) -1.24844px 2.72789px 0px, rgb(0, 0, 0) -2.07227px 2.16926px 0px, rgb(0, 0, 0) -2.66798px 1.37182px 0px, rgb(0, 0, 0) -2.96998px 0.42336px 0px, rgb(0, 0, 0) -2.94502px -0.571704px 0px, rgb(0, 0, 0) -2.59586px -1.50383px 0px, rgb(0, 0, 0) -1.96093px -2.27041px 0px, rgb(0, 0, 0) -1.11013px -2.78704px 0px, rgb(0, 0, 0) -0.137119px -2.99686px 0px, rgb(0, 0, 0) 0.850987px -2.87677px 0px, rgb(0, 0, 0) 1.74541px -2.43999px 0px, rgb(0, 0, 0) 2.44769px -1.73459px 0px, rgb(0, 0, 0) 2.88051px -0.838247px 0px; } body{ background:url('https://media1.giphy.com/media/IPFz7kGsj5tqU/giphy.gif' no-repeat center center; background-size:100%; } #play{ font-size:20; background-color:#ff0000; border:none; border-color:#6b0000; padding-left:15px; padding-right:15px; padding-top:10px; padding-bottom:10px; border-radius:10px; outline:none; transition-duration:0s; } button:hover{ background:url('https://media2.giphy.com/media/3o6vXRxrhj7Ov94Gbu/giphy.gif')no-repeat center center; background-size:100%; color:white; border:none; } #center{ text-align:center; padding:10px; position:absolute; transform:translate(-50%,-50%); border-radius:10px; top:50%; left:50%; } .hidden { display:none; } /* This will be removed to show the element when the time comes */ </style> </head><body> <div id="bodyDiv"> <div id="center"> <h1 align="center">The Devil's Number</h1> <button id="play" onclick="play()">Play</button> </div> <!-- Don't use headings because of how they style the text. You can't have an h3 without first having an h1 and h2. This is where each passage of the story will go. Because each passage will go inside of this element, you won't need to write a new H3 with .innerHTML each time. You can just update the contents of the one tag over and over with .textContent --> <h2 id="sentence" class="hidden"></h2> </div> <script> var counter = 0; var bd = document.getElementById('bodyDiv'); var sentence = document.getElementById("sentence"); sentence.addEventListener("click", next); function play(){ clicks = 0; document.body.style.background = "url('https://media.giphy.com/media/ptbUFNalAnoQw/giphy.gif')no-repeat center center"; document.body.style.backgroundSize = "100%"; document.getElementById('center').remove(); sentence.classList.remove("hidden"); // Remove the CSS that hides the sentence placeholder next(); } // Put each sentence in the array. var sentences = ["You wake up in the dead of night, not able to see anything.", "You can sense someone in your home.", "sentence 3", "sentence 4", "sentence 5", "sentence 6", "sentence 7", "sentence 8" ]; function next(){ // Display the array item with the index that matches the counter sentence.textContent = sentences[counter]; counter++ // Increase counter by 1 if(counter === sentences.length){ counter = 0; // counter has reached end of the array. reset it. sentence.textContent = "The End"; } } </script></body></html>
-
哆啦的时光机
您应该将点击检查移至 Next 功能。这就是我将如何做到的:<html><head> <title>The Devil's Number</title> <style> @import url('https://fonts.googleapis.com/css?family=Mansalva&display=swap'); * { font-family: 'Mansalva', cursive; margin: 0; } body, html { width: 100%; height: 100%; } #bodyDiv { width: 100%; height: 100%; position: absolute; text-align: center; } h3 { position: absolute; transform: translate(-50%,-50%); top: 50%; left: 50%; color: #ffffff; } h1 { color: #ff0000; font-size: 50px; text-shadow: rgb(0, 0, 0) 3px 0px 0px, rgb(0, 0, 0) 2.83487px 0.981584px 0px, rgb(0, 0, 0) 2.35766px 1.85511px 0px, rgb(0, 0, 0) 1.62091px 2.52441px 0px, rgb(0, 0, 0) 0.705713px 2.91581px 0px, rgb(0, 0, 0) -0.287171px 2.98622px 0px, rgb(0, 0, 0) -1.24844px 2.72789px 0px, rgb(0, 0, 0) -2.07227px 2.16926px 0px, rgb(0, 0, 0) -2.66798px 1.37182px 0px, rgb(0, 0, 0) -2.96998px 0.42336px 0px, rgb(0, 0, 0) -2.94502px -0.571704px 0px, rgb(0, 0, 0) -2.59586px -1.50383px 0px, rgb(0, 0, 0) -1.96093px -2.27041px 0px, rgb(0, 0, 0) -1.11013px -2.78704px 0px, rgb(0, 0, 0) -0.137119px -2.99686px 0px, rgb(0, 0, 0) 0.850987px -2.87677px 0px, rgb(0, 0, 0) 1.74541px -2.43999px 0px, rgb(0, 0, 0) 2.44769px -1.73459px 0px, rgb(0, 0, 0) 2.88051px -0.838247px 0px; } body { background: url('https://media1.giphy.com/media/IPFz7kGsj5tqU/giphy.gif')no-repeat center center; background-size: 100%; } #play { font-size: 20; background-color: #ff0000; border: none; border-color: #6b0000; padding-left: 15px; padding-right: 15px; padding-top: 10px; padding-bottom: 10px; border-radius: 10px; outline: none; transition-duration: 0s; } button:hover { background: url('https://media2.giphy.com/media/3o6vXRxrhj7Ov94Gbu/giphy.gif')no-repeat center center; background-size: 100%; color: white; border: none; } #center { text-align: center; padding: 10px; position: absolute; transform: translate(-50%,-50%); border-radius: 10px; top: 50%; left: 50%; } </style></head><body> <div id="bodyDiv" style="height: 100%"> <div id="center"> <h1 align="center">The Devil's Number</h1> <button id="play" onclick="play()">Play</button> </div> </div> <script> var clicks; var bd = document.getElementById('bodyDiv'); function play(){ clicks = 0; document.body.style.background = "url('https://media.giphy.com/media/ptbUFNalAnoQw/giphy.gif')no-repeat center center"; document.body.style.backgroundSize = "100%"; document.getElementById('center').remove(); document.getElementById('bodyDiv').addEventListener("click",next); } function next() { // check clicks alert("clicks: " + clicks); if(clicks == 0){ document.getElementById('bodyDiv').innerHTML = "<h3>You wake up in the dead of night, not able to see anything.</h3>"; } else if(clicks > 0){ document.getElementById('bodyDiv').innerHTML = "<h3>You can sense someone in your home.</h3>"; } clicks = clicks + 1; } </script></body></html>
-
慕标琳琳
好的,嗯,一些建议:bodyDiv如果该 div 不是主体,则不应调用 div ,根据定义,a<div>不是 a<body>您的play()函数实际上只被调用一次,并且无法验证您的(clicks == 0)or(clicks == 1)条件,因为您的next()函数从未执行过(您应该编写click++而不是click = click + 1)基本上你应该从这个模板开始:将<h3>元素直接添加到您的 html 中body:<h3 id="myH3"></h3>var clicks = 0;var sentences = [ 'You wake up in the dead of night, not able to see anything.', 'You can sense someone in your home.', // and so on];// global var to hold an html element that the user will clickvar actionElement = document.querySelector('#actionElementId');function play() { choseSentence(clicks); clicks++; // don't write a function just to increment a variable}function choseSentence(clickCount) { var targetDiv = document.querySelector('#myH3'); targetDiv.innerHTML = sentences[ clickCount - 1 ]; // select by index the sentence in the previously declared array}// say that play function will be called each time you click the `actionElement` elementactionElement.addEventListener('click', play, false);