直接从html调用javascript方法

时间:2017-04-08 17:49:48

标签: javascript html jsp

你好我想直接从jsp调用javascript方法。这是我在这个javascript方法中的虚拟代码print1()没有调用。

<html>`
 <body>
 <h1>hello</h1>
 <script>print1()</script>
 <p>hii</p>

  <script>
   function print1(){
    alert("hello");
    document.getElementsByTagName("p").innerHTML="hey";
    }
   </script>
   </body>
   </html>

解决这个问题可以在很大程度上帮助我。 注意 - 我不能使用onload调用它,因为这只是虚拟代码我必须将逻辑应用于其他代码

3 个答案:

答案 0 :(得分:0)

有两种方法可以解决此问题:

选项1 :将调用<script>print1()</script>移至文件末尾(即,在调用之前先定义函数,然后查看here以获取有关此内容的明确说明)< / p>

选项2 :在body onload期间拨打电话,如下所示:

<body onload="print1()">

</body>

答案 1 :(得分:0)

首先,您的代码中存在一些需要修复的语法错误。

然后,您需要在定义函数后(或在相同的<script>标记中)调用该函数。 Function hoisting未及时提升print1() 。这是因为浏览器在遇到脚本时会尝试执行脚本。这意味着当浏览器看到<script>print1()</script>时,它甚至都不知道文件的其余部分。

因此,您需要在定义函数后调用print1()。除了注释中的解决方案和其他答案之外,另一个选择是将脚本放在单独的文件中并使用defer调用它。

printFunc.js:

print1();

在html文件中:

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

这会调用print1()。请注意defer does not work if the script is not external

只是为了好玩(并且要查看浏览器如何通过<script>标记),您甚至可以通过setTimeout调用该函数:

<script>
    setTimeout(function(){ print1(); }, 3000);
</script>
<script>
    function print1(){
       alert("hello");
       document.getElementsByTagName("p").innerHTML="hey";
    }
</script>

答案 2 :(得分:0)

首先,您可以在body标签中将其称为&#34; onload&#34;,Second&#34; getElementsByTagName&#34;返回数组,因此您必须告诉您想要进行更改的数组位置

 <html>`
 <body onload= "print1()">
  <h1>hello</h1>


    <p>hii</p>

  <script>
    function print1(){
     alert("hello");
      document.getElementsByTagName("p")[0].innerHTML="hey";
     }
   </script>

   

你也可以这样做

 <html>`
   <body>
    <h1>hello</h1>

      <p>hii</p>

    <script>
     function print1(){
       alert("hello");
        document.getElementsByTagName("p")[0].innerHTML="hey";
       }
   </script>
   <script>print1();</script>
   </body>
    </html>