我有以下 JavaScript 功能:
function insertIntoTable(title, text, sketchFileName, categoryId)
{
var db = window.openDatabase('xxx', '1.0', 'xxx database', 5*1024*1024);
db.transaction(
function (tx) {
if (sketchFileName == '')
{
tx.executeSql('INSERT INTO TableXXX (title, content, created, categoryID) VALUES (?, ?, ?, ?)',
[title, text, Date.now(), categoryId],
function (transaction, resultSet) {
if (resultSet.rowsAffected) {
myNameSpace.returnedId = resultSet.insertId;
}
}, handleSQLError);
}
}, handleSQLError);
);
}
现在我使用全局变量myNameSpace.returnedId
来获取insertId。
有没有办法向函数insertIntoTable
添加一个引用myNameSpace.returnedId
的新参数?
答案 0 :(得分:1)
您可以使用两个参数引用变量:
function insertIntoTable(title, text, sketchFileName, categoryId, nameSpace, variable)
{
...
nameSpace[variable] = resultSet.insertId;
}
这样称呼:
insertIntoTable( ..., myNameSpace, 'returnedId' );
另一种方法是使用setter函数:
function insertIntoTable(title, text, sketchFileName, categoryId, setReturnedId)
{
setReturnedId( resultSet.insertId );
}
这样称呼:
insertIntoTable( ..., function(value){ myNameSpace.returnedId = value } );
答案 1 :(得分:0)
将功能更改为:
function insertIntoTable(title, text, sketchFileName, categoryId, nameSpace) {
...
...
nameSpace.returnedId = resultSet.insertId; // assign this here
并通过以下方式调用该函数:
insertIntoTable(someTitle, someText, someSketchFileName, someCategoryId, myNamespace)
您将传入对myNamespace的引用(在函数中将被称为nameSpace
)。
您可以访问所有myNameSpace
的属性(并可以为其分配内容)。