IBM Worklight - Javascript函数未定义

时间:2014-02-22 08:51:35

标签: javascript jquery-mobile ibm-mobilefirst

我正在使用jquerymobile 1.3.2 我的问题是,首先,我把我的脚本放在头部,并且所有功能都可以正常工作,除非它不能在其他页面中重复使用。然后,我将脚本移动到自己的javascript页面,然后我已经包含了js文件,但是当我尝试在移动模拟器上运行它时,所有的功能都不起作用。我试图检查它,它说“未捕获的引用错误:doTimer函数未定义”。我试图验证js文件是否加载了alert(),并且警报有效,但其他任何事情都没有。

我已经检查了所有其他相关问题,但没有一个解决方案可以解决这个问题。

这是我的javascript和html代码。

JS:

var start = new Date().getTime(); 
var elapsed = '0.0'; 
var t;
var timer_is_on=0;

function timedCount() {
    var time = new Date().getTime() - start;
    elapsed = Math.floor(time / 100) / 10; 
    if(Math.round(elapsed) == elapsed) { elapsed += '.0'; } 
    document.getElementById('txt').value=elapsed;
    t=setTimeout("timedCount()",50);
}

function doTimer() {
    if (!timer_is_on) {
        start = new Date().getTime(); 
        timer_is_on=1;
        timedCount();
    }
}

function stopCount() {
    clearTimeout(t);
    timer_is_on=0;
}

function resetCount() {
    document.getElementById('txt').value='0.0';
    var elapsed = '0.0';
}

HTML:

第1页

<div data-role="page" id="page1">

  <div data-role="header">
    <h1>Test 1</h1>
  </div>

  <div data-role="content">

    <table>

      <tr>
        <td><input type="text" id="txt"></td>
      </tr>

    </table>
  </div>

  <div data-role="footer">
  </div>

</div>

第二页内容与第一页内容类似。 这是我包含的脚本,我将其放在html代码下面,其他脚本如

    <script src="js/StarKids.js"></script> 
    <script src="js/initOptions.js"></script>
    <script src="js/messages.js"></script>

先谢谢。

1 个答案:

答案 0 :(得分:0)

这与您original question的代码不同,也就是说,没有事件可以捕获“页面”之间的导航,因此没有重置计时器...我建议您注意之前在询问为什么它在页面之间导航时不起作用。

无论如何,这一次的问题是你在wlCommonInit() ...中定义了所有的功能 而是将它(对于所有函数)更改为以下内容...

此代码段的含义是,一旦应用程序启动(wlCommonInit()),它将调用doTimer()doTimer()调用timedCount()等等......

// global vars
var start
var elapsed = '0.0'; 
var t;
var timer_is_on = 0;

function wlCommonInit(){
    doTimer();
}


function doTimer() {
    alert("In doTimer()");   
    if (!timer_is_on) {
        start = new Date().getTime(); 
        timer_is_on = 1;
       timedCount();
    }
}

function timedCount() {
    alert ("In timeCounted) 
    var time = new Date().getTime() - start;
    elapsed = Math.floor(time / 100) / 10; 
    if(Math.round(elapsed) === elapsed) { elapsed += '.0'; } 
    document.getElementById('space').value=elapsed;
    t = setTimeout("timedCount()",50);
}