2012-04-15 88 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。

相关问题