2011-01-14 3 views
2

이 크롬 확장에 있고이 코드가 있다고 가정 할 수 있습니다 :HTML5는 값이 정의되지 않은 것을 말한다

var DB = openDatabase('CMPDB', '1.0', 'Database for CMP', 4 * 1024 * 1024); 
LoadFromDB(); 

function LoadFromDB() { 

    DB.transaction(function(tx) 
    {   
     tx.executeSql('CREATE TABLE IF NOT EXISTS table(X, Y, Z UNIQUE)'); 

     tx.executeSql('SELECT * FROM table', [], function (tx, results) { 
      var len = results.rows.length; 
      for (i = 0; i < len; i++) {     
       alert(results.rows.item(i).X.text); 
       alert(results.rows.item(i).Y.text); 
       alert(results.rows.item(i).Z.text);       

      } 
     }); 
    }); 
} 
경고의 모든 테이블 전에 생성되었다고 정의되지 않은 추정 돌아 오지 않는 이유

및 그 크롬의 개발자 도구는 값이 테이블에 있다고 말합니다.

+0

console.log (result); 웹킷 개발자 콘솔 – sissonb

+1

에있는 객체를 검사하라. 값이 '정의되지 않았다'는 HTML 5가 아니라 Chrome의 자바 스크립트 인터프리터 V8 (예, 알겠습니다.)입니다. 둘째,'tx.executeSql'이하는 일을 보여줄 수 있습니까? 이 함수는'results'를 결과로 채워야합니다. –

답변

0

내 생각에 SELECT 문이 으로 호출되고 전에 표가 작성된 것 같습니다. SELECT 쿼리를 콜백 함수로 옮겨서 이라고 말한 후CREATE TABLE SQL을 실행 한 후에 해 보셨습니까? 다음과 같이하십시오 :

tx.executeSql('CREATE TABLE IF NOT EXISTS table(X, Y, Z UNIQUE)', function(tx) { 
    tx.executeSql('SELECT * FROM table', [], function (tx, results) { 
     var len = results.rows.length; 
     for (i = 0; i < len; i++) {     
      console.log(results.rows.item(i).X.text); 
      console.log(results.rows.item(i).Y.text); 
      console.log(results.rows.item(i).Z.text);       
     } 
    });    
}); 
관련 문제