1

我有两个按钮,用于在单击时激活我的 JavaScript 函数,但它们似乎不起作用。但是,当我将 JavaScript 函数内容移到函数之外时,它们可以正常工作。所以按钮肯定是问题所在。

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

3 回答 3

3

按钮不是问题,您有一个范围问题,因为您调用的函数与按钮不在同一级别。

您可以通过绑定到就绪调用中的按钮来解决此问题并使代码更简洁,如下所示

$(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>​

在这里小提琴 - http://jsfiddle.net/7eYNn/

于 2012-04-15T14:14:03.947 回答
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);
}
于 2012-04-15T14:11:47.107 回答
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。

于 2012-04-15T14:13:49.650 回答