手风琴不起作用

时间:2015-05-08 16:27:10

标签: javascript accordion

我正在使用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>

如何让手风琴菜单在函数中运行?

3 个答案:

答案 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>