javascript - InnerHTML-从脚本中获取

标签 javascript html css twitter-bootstrap innerhtml

我正在尝试显示从 1 到 7 的随机数字。我不希望它们重复,并且我想显示每个数字。我已经在 script 标记内编写了 JS 代码。我想在点击 button 时获得一个随机数,但我收到了错误

Uncaught TypeError: Cannot set property 'innerHTML' of null
    at grandom (fe.html:48)
    at HTMLButtonElement.onclick (fe.html:25)

下面是我的代码

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="">
    <title>Goplan Project Selection</title>

    <link rel="canonical" href="https://getbootstrap.com/docs/4.1/examples/sign-in/">

    <!-- Bootstrap core CSS -->
    <link href="https://getbootstrap.com/docs/4.1/dist/css/bootstrap.min.css" rel="stylesheet">



  </head>

  <body>
  <div class="jumbotron">
  <div class="text-center">
        <img src="cissoiree.jpg" width="80px" height="80px">
    <h1 style="text-size:300em">Go-Plan</h1></div></div>
    <div style="padding-top:20px;" class="text-center">
      <button class="btn-lg btn-primary" onclick="grandom()">Click!</button>
      <p id="demo"><p>
    </div>
    <script type="text/javascript"> 

    function grandom()
    {
    var q=[2,3,1,5,4,7,6];
    var x=7;
    var i;
    x=q.length;
    var random;
            while(1)
            {

                random = Math.floor(Math.random()*x);
                if(random<=q.length)
                break;
            }
            document.write("<br>");
            document.write("Question No : " + q[random] );
            if(q.length!=1)
            <!--document.write("<input type=button value=click here onclick=grandom();><br>");-->
            document.getElementById("demo").innerHTML = q[random];
            q.splice(random,1);     
            document.write("<br>");
     }
     </script> 
    </body>
</html>


最佳答案

document.write(...); 之后,页面中没有其他元素需要传递的文本。

这就是为什么当您尝试查找 document.getElementById("demo") 时,它找不到,并返回 null。 (然后当您尝试访问其 innerHTML 时抛出错误)

如果您尝试向页面附加某些内容,则应使用 document.body.innerHTML += "..."

关于算法本身 - 您可以使用:

[1,2,3,4,5,6,7].sort(function() { return .5 -Math.random();});

它将随机打乱数组。

关于javascript - InnerHTML-从脚本中获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60396795/

相关文章:

javascript - 使前两列粘在表格中

javascript - 什么?三元运算符意味着使用 react 和 javascript?

javascript - 在屏幕外滑动 div

html - 如何将这些元素放在同一行?

html - 输入选择框不要在 Safari 中使用填充

JavaScript 使用随机数生成问题,对每个方程使用随机选择运算符(+、*、-)

javascript - 使用 jquery 动态更改自定义 html 值

html - 当屏幕尺寸改变时,Safari 无法正确对齐 div

javascript - React 中相同样式组件的不同背景图像

javascript - 将数值更改为文本 - jQuery/NivoSlider