10

これは、jQuery-1.4.3externsファイルを使用しているときに特に見られます。そのためのjavadocは

/**
 * @param {(string|number|function(number,number))=} arg1
 * @return {(number|jQueryObject)}
 * @nosideeffects
 */
jQueryObject.prototype.width = function(arg1) {};

次のような電話があります。

   var w =  $(window).width();
    $('#whatever').width(w)

クロージャーの文句:警告-jQueryObject.prototype.heightの実際のパラメーター1が、見つかった正式なパラメーターと一致しません:(jQueryObject | null | number)required:(function(number、number):?| number | string | undefined)$('# Xobni')。height($(window).height());

遊んでみると(可能な戻り型を削除して)、問題はwidthへの最初の呼び出しがおそらくjQueryObjectを返す可能性があることであり、それは有効な入力ではないため、Closureはエラーを返します。私はこれを追加してみました:

/**
 * @type {number}
 */
var w =  $(window).width();
$('#Xobni').width(w);

しかし、Closureは次のように文句を言います。警告-初期化変数が見つかりました:(jQueryObject | null | number)が必要です:number var w = $(window).width();

問題は、widthが引数を取ると、jQueryObjectを返すことです。引数を取らない場合は、数値を返します。だから私は私の呼び出しが大丈夫であることを知っていますが、javadocsはそれを完全に反映していないので、Closureは私に警告しています。javadocsを適切に修正する方法、またはこの結果が数値になることをClosureに伝える方法はありますか。おそらくエラーを抑制できることはわかっていますが、これらに注釈を付ける方法を知りたいと思います。

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

4

2 に答える 2

8

これは次のようにオーバーライドできます。

var w = /** @type {number} */ ($(window).width());
$('#whatever').width(w)
于 2010-10-28T02:52:23.403 に答える
2

これを試して:

var w =  $(window).width();
w = parseInt(w.toString());
$('#whatever').width(w);

またはこれ:

var w =  $(window).width() + '';
$('#whatever').width(w);
于 2010-10-28T01:02:32.997 に答える