Chrome插件中的Javascript语法错误

时间:2010-06-05 16:07:18

标签: javascript jquery google-chrome google-chrome-extension

chrome.tabs.executeScript(null, {code:"$.each(selectValues, function(key='" + timestamp + "', value='Custom')
{   
     $('#expire').
          append($(\"<option></option>\").
          attr(\"value\",key).
          text(value)); 
});"});

它表示第一行有语法错误,WebKit检查器显示奇怪的突出显示模式。

这有什么问题?一位朋友认为我需要在某处逃脱一些角色。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

这绝对不是有效的语法。你在形式参数列表中有一个等号。

它可能会最终成为:

$.each(selectValues, function(key='someTime', value='Custom')
{   
     $('#expire').
          append($(\"<option></option>\").
          attr(\"value\",key).
          text(value)); 
});

我建议您尽可能使用文件选项,这样您就不必处理转义问题了:

chrome.tabs.executeScript(null, {file: "myScript.js"});

可能是myScript.js中的代码类似于:

$.each(selectValues, function(key, value)
{   
     $('#expire').
          append($("<option></option>").
          attr("value",key).
          text(value)); 
});

然而,目前尚不清楚你要做什么。 jQuery.each使用两个参数进行回调,但您对等号右侧的值有什么期望呢?

答案 1 :(得分:1)

你无法使用那种方式。 $.each()期望函数作为回调,需要两个参数:indexvalue

jQuery.each( collection, callback(indexInArray, valueOfElement) )

您无法将自己的数据传递给功能定义

这与jQuery无关,但与JavaScript有关。

如果使用each,则传递给函数的参数来自集合。您无法传递自定义参数。

你想做什么?如果您想设置#expire,请执行此操作而不使用each

$("<option></option>").val('Custom').text(timestamp).appendTo('#expire');

如果您不熟悉jQuery,请阅读tutorial


在PHP和Python等其他语言中,它意味着您为参数提供默认值。但是这在JavaScript中是不可能的(以这种方式)。