在html页面中嵌入javascript节的位置

在html页面中嵌入javascript节的位置,javascript,Javascript,问题是,我不知道在html页面中嵌入javascript的位置,无论是在页眉部分还是正文部分 例1: <html> <head> <title>events</title> <script> document.getElementById("b").onclick=function(){displayDate()}; function displayDa

问题是,我不知道在html页面中嵌入javascript的位置,无论是在页眉部分还是正文部分

例1:

 <html>
      <head>
       <title>events</title>
        <script>
          document.getElementById("b").onclick=function(){displayDate()};
          function displayDate()
          {
            document.getElementById("demo").innerHTML=Date();
          }    
        </script>   
      </head>
      <body>
        <p id="demo"></p>
        <button id="b">new</button>
      </body>
    </html>

事件
document.getElementById(“b”).onclick=function(){displayDate()};
函数displayDate()
{
document.getElementById(“demo”).innerHTML=Date();
}    

新的
在上面的示例中,我在head部分放置了脚本标记,但它不起作用

示例:2

<html>
  <head>
    <title>events</title>
    <script>
      function upper()
      {
        var x=document.getElementById("t"); 
        x.value=x.value.toUpperCase();
      }
    </script>
  </head>
  <body >
    enter some text:<input type="text" id="t" onChange="upper()"/>
  </body>
</html>

事件
函数上限()
{
var x=document.getElementById(“t”);
x、 value=x.value.toUpperCase();
}
输入一些文本:

在第二个示例中,我将javascript放在标题部分,它工作正常。第一个示例演示了在第二个示例中,当输入数据时,单击按钮日期将显示在文本框中,如果我们从框中出来,框中的字母将转换为大写

你可以把它放在头上。问题是你的例子不一样。第一个不起作用,因为当前日期是通过调用
date()
检索的,而当前日期应该是
newdata().getDate()
。第二个示例之所以有效,是因为代码是有效的。

为了让代码更具可读性,我更喜欢将JavaScript放在head部分。如果需要从那里访问元素,请使用
窗口。onload
事件:

<head>
<title>events</title>
<script type="text/javascript">
    window.onload = function() {
        document.getElementById("b").onclick = function() {
            displayDate();
        };
    };

    function displayDate()
    {
        document.getElementById("demo").innerHTML=Date();
    }
</script>
</head>

事件
window.onload=函数(){
document.getElementById(“b”).onclick=function(){
显示日期();
};
};
函数displayDate()
{
document.getElementById(“demo”).innerHTML=Date();
}
这就行了


您的第二个示例之所以有效,是因为您刚刚定义了一个函数,没有尝试访问任何元素。

您遇到的问题是,您试图在将元素加载到DOM之前引用它

将脚本放入HEAD标记时,dom尚未加载,document.getElementById将找不到您要查找的内容

你有几个不同的选择来处理这个问题。您可以将脚本放在页面的末尾,这将适用于这里的小示例

也许更好的选择是看看如何学习/使用jquery或其他js实用程序。Jquery通过为您提供一个“就绪”事件,使解决这个问题变得容易。此就绪事件将在DOM完全加载时触发。因此:

$(document).ready(
  function()
  {
     $("#demo").html((new Date()).toString());
  });

这就是你真正需要的。使用这种方法,脚本在页面上的位置无关紧要。

您应该将它放在正文的末尾,就在
之前。不需要jQuery,只需这样,
窗口。onload
与跨浏览器一样易于使用。这是事实,但很明显,阴影向导对javascript来说是新的,因此,学习如何使用jquery是一个很好的建议,imho。新的,比如12年的经验?请不要把它私人化。不,不,我根本不想把它私人化。在我看来,这个问题的本质就像你是js的新手一样,这没什么错。这类问题在刚学会做事的人身上很常见,如果我误解了,我很抱歉。了解DOM生命周期、js加载和流通常是进入js学习的第一件事,所以我想你可能会理解我的困惑。我没有问这个问题,我对您的答案发表了评论。您的解决方案有效,但我不理解您的解释。我无法理解您为什么只在window.onload中放置特定的代码块,为什么不在total脚本中,并且您提到在第二个示例中,没有访问任何元素,但是访问了文本框。@user22002
window.onload
块应该只包含访问DOM的代码。所有的函数定义和其他不访问元素的代码最好是独立的。谢谢,我理解了。你能给我推荐一个学习javascript的好网站吗?因为我刚刚开始学习learning@user22002:,@user22002除了Felix建议之外,您还有两个基本选项。如果您想遵循标准并成为“优秀”的JavaScript程序员(而不仅仅是编写有效代码的程序员),那么您会做得更好。如果你只想以最快的方式学习,而不想遵循标准或良好的实践,那么你就有了臭名昭著的方法。你的选择。