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

最初の行に構文エラーがあり、WebKit インスペクターが奇妙な強調表示パターンを示していると表示されます。

それの何がいけないの?友人は、どこかでいくつかの文字をエスケープする必要があると考えています.

助けてくれてありがとう!

4

2 に答える 2

2

それは間違いなく有効な構文ではありません。仮パラメータ リストに等号があります。

おそらく次のようになります。

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

可能であれば file オプションを使用することをお勧めします。これにより、エスケープの問題に対処する必要がなくなります。

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は 2 つのパラメーターを持つコールバックを受け取りますが、等号の右側の値はどうなると思いますか?

于 2010-06-05T16:10:08.830 に答える
1

それぞれをそのまま使用することはできません。は、と$.each()の 2 つのパラメータを期待するコールバックとして関数を期待しています。indexvalue

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

独自のデータを関数定義に渡すことはできません。

これは jQuery とは関係ありませんが、一般的な JavaScript とは関係ありません。

each を使用する場合、関数に渡されるパラメーターはコレクションから取得されます。カスタム パラメータを渡すことはできません。

何をしたいですか?設定したい場合#expireは、なしで実行してくださいeach

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

jQuery に慣れていない場合は、チュートリアルをお読みください。


PHP や Python などの他の言語では、パラメーターにデフォルト値を指定することを意味します。ただし、これは JavaScript では不可能です (この方法では)。

于 2010-06-05T16:14:51.077 に答える