2015-05-08 37 views
1

我在JavaScript的手風琴菜單工作不工作,這裏是代碼手風琴的功能

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

它工作正常,但是當我把它放在一個功能,它doen't工作 此代碼不起作用

<body onload="test()"> 
<script> 
    $(function() { 
    $("#accordion").accordion(); 
    }); 
    </script> 
<div style="width:50%;float: left;height:50%;" id="accordion"></div> 

<script> 
function test(){ 
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; 
} 
</script> 

我該如何讓功能內的手風琴菜單工作?

+0

是不是從這個行調用:的onload = 「測試()」? –

回答

2

它在函數內部不起作用的原因是因爲您沒有明確地調用該函數。 在方便的地方定義函數,然後從documentOnLoad函數中調用它,以便腳本在執行時獲取所有引用的元素。

編輯:不能相信我錯過了onload="test()"線。 這讓我覺得原因可能是執行順序。你在定義它之前調用測試,這可能是一個原因。定義測試功能的頂部(onload=test()之前)可能會有所訣竅。 也從$(function()...)調用測試可能是一個好主意,因爲它將在documentReady之後以及調用.accordion()函數 P.S.之前確定執行。把這當作一個建議,而不是一個具體的答案,因爲我無法親自在我的工作場所測試我的答案。

+0

是不是從這行調用:onload =「test()」? –

+0

方便的地方是什麼意思? –

1

您必須將函數放在腳本標籤之間。您沒有關閉腳本標記。

+0

腳本標記已關閉,但我忘了粘貼它。 已編輯帖子 –

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>