我正在使用javascript中的手风琴菜单,这是代码
$ heroku run bash
...
~$ ./target/universal/stage/bin/myApp -DapplyEvolutions.default=true -DapplyDownEvolutions.default=false -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=${DATABASE_URL}
它工作正常,但当我把它放在一个函数中时,它无法正常工作 这段代码不起作用
<body>
<script>
$(function() {
$( "#accordion" ).accordion();
});
</script>
<div style="width:50%;float: left;height:50%;" id="accordion"></div>
<script>
var html = '';
var text = 'Lorem ipsum dolor sit amet ..';
// first we generating our html in the loop
for(var i=0 ; i<6 ; i++) {
html += '<h3>Section ' + i + '</h3>' + '<div><p>' + text + '</p></div>';
}
document.getElementById("accordion").innerHTML = html;
// next we're inserting html into block with ID accordion
</script>
如何让手风琴菜单在函数中运行?
答案 0 :(得分:2)
它在函数内部不起作用的原因是因为你没有明确地调用函数。 在方便的位置定义函数,然后从documentOnLoad函数调用它,以便脚本在执行时获取所有引用的元素。
编辑:不能相信我错过了onload="test()"
行。
这让我觉得原因可能是执行顺序。你在定义它之前调用test,这可能是一个原因。在顶部(onload=test()
之前)的某处定义测试函数,这可能会起作用。
同样从$(function()...)调用测试可能是个好主意,因为在documentReady
之后和调用.accordion()
函数之前肯定会执行
附:把它作为一个建议而不是一个具体的答案,因为我无法在我的工作场所自己测试我的答案。
答案 1 :(得分:1)
您必须将函数放在脚本标记之间。您没有关闭脚本标记。
答案 2 :(得分:0)
问题解决了,这是正确的代码:
<head>
<script>
function test(){
var html = '';
var text = 'Lorem ipsum dolor sit amet ..';
for(var j=0 ; j<6 ; j++){
for(var i=0 ; i<1 ; i++) {
html += '<h3>Section ' + j + '</h3>' + '<div><p>' + text + '</p></div>';
}
document.getElementById("accordion").innerHTML = html;
}
$( "#accordion" ).accordion();
}
</script>
</head>
<body onload="test()">
<div style="width:50%;float: left;height:50%;" id="accordion"></div>
</body>