2012-04-15 90 views
1

我有兩個按鈕用於激活JavaScript功能,但是它們似乎不起作用。但是,當我將JavaScript函數內容移到函數之外時,它們可以正常工作。所以按鈕肯定是問題。OnClick函數不適用於HTML按鈕

的JavaScript:

$(document).ready(function() 
{ 

function recordjourney() 
{ 
var journey = JSON.parse(localStorage.getItem('journey'))||[]; 
journey.push(location.protocol + '//' + location.host + location.pathname); 

localStorage.setItem('journey', JSON.stringify(journey)); 

document.write(journey); 
} 


function resetjourney() 
{ 
localStorage.clear() 
} 

}); 

HTML:

<p><button name="record" type="button" onclick="recordjourney()">Record Journey</button</p> 

<p><button name="reset" type="button" onclick="resetjourney()">Reset Journey</button></p> 
+2

外放兩種功能的$(document)。就緒(函數().... – 2012-04-15 14:10:46

+0

你知道那'document.write(journey);'會替換整個文件嗎? – 2012-04-15 14:13:29

+0

@Felix Kling是的,我只是在那裏看看按鈕是否工作。 – user1199649 2012-04-15 14:21:28

回答

2

的按鈕都沒有問題,你有一個範圍的問題,因爲該功能,您呼籲不要在同一級別的按鈕存在。

可以解決這個問題,讓你的c通過像這樣

$(document).ready(function() { 
    $('[name="record"]').click(recordjourney); 
    $('[name="reset"]').click(resetjourney);  

}); 

function recordjourney() { 
    var journey = JSON.parse(localStorage.getItem('journey')) || []; 
    journey.push(location.protocol + '//' + location.host + location.pathname); 

    localStorage.setItem('journey', JSON.stringify(journey)); 

    document.write(journey); 
} 


function resetjourney() { 
    localStorage.clear() 
}​ 

<p><button name="record" type="button">Record Journey</button</p> 

<p><button name="reset" type="button">Reset Journey</button></p>​ 

小提琴這裏的準備調用中綁定到你的按鈕ODE一點清潔劑 - http://jsfiddle.net/7eYNn/

+0

非常感謝,完美的作品:) – user1199649 2012-04-15 14:19:08

+0

謝謝...幫我解決了一個問題。這實際上是新JavaScript程序員的一個重要概念。隨時隨地都會遇到麻煩。 – Andrew 2014-03-10 00:29:46

0

初始化函數出$(document).ready()

$(document).ready(function() 
{ 

}); 


function resetjourney() 
{ 
    localStorage.clear() 
} 


function recordjourney() 
{ 
    var journey = JSON.parse(localStorage.getItem('journey'))||[]; 
    journey.push(location.protocol + '//' + location.host + location.pathname); 

    localStorage.setItem('journey', JSON.stringify(journey)); 

    document.write(journey); 
} 
0

是的,沒錯。如果你在一個函數內部定義了一個函數,它將對該函數是私有的。您需要創建一個全局變量

var recordjourney; 
$(document).ready(function(){ 
... 
recordjourney = { 
    var journey = 
... etc 

雖然,當然,因爲你是使用JQuery我做

$(document).ready(function(){ 
... 
    $('button[name=record]').bind(function(){ 
     //put your function here 
    }) 

,並從按鈕的標籤去掉難看的onclick =「recordjourney。

相關問題