你好我想直接从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调用它,因为这只是虚拟代码我必须将逻辑应用于其他代码
答案 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>