0

オプションのパラメーターを使用した関数の作成について、同様の質問を見つけました。しかし、パラメータが存在しない可能性があるため、エラーが発生し続けます。私はたくさんのことをしているインタラクティブマップを持っています。ただし、outputlayerがnullの場合、関数は実行されません。このレイヤーは存在する場合と存在しない場合があります。このオプションのパラメーターが存在しない場合に、このパラメーターを渡す方法がわからないようです。助けてくれてありがとう!

function appdelete(selected,vectorlayer,drawFeature,outputlayer) {

    $(selected).prev().children().children().eq(2).val('Latitude');
    $(selected).prev().children().children().eq(4).val('Longitude');
    vectorlayer.destroyFeatures();
    drawFeature.activate();

    try {
        map.removeLayer(outputlayer);
    } catch(err) { };
}
4

4 に答える 4

3

それが最初に存在するかどうか、そしておそらくタイプを確認してください。

if(outputlayer && "object" === typeof outputlayer) {
    map.removeLayer(outputlayer);
}
于 2012-12-04T14:48:24.983 に答える
1

変数が存在するかどうかを確認する必要があります。

if(outputlayer){
    map.removeLayer(outputlayer);
}
于 2012-12-04T14:48:56.533 に答える
1

undefinedにするだけの場合は、次のようにします。

if(outputlayer === undefined) return;

また

if(outputlayer !== undefined) {
    map.removeLayer(outputlayer);
}
于 2012-12-04T14:50:33.957 に答える
0

デフォルトのパラメータ初期化:

outputlayer= (typeof outputlayer=== "undefined") ? "someDefaultValue" : outputlayer;

あなたの職務では:

function appdelete(selected,vectorlayer,drawFeature,outputlayer) {
    outputlayer= (typeof outputlayer=== "undefined") ? "defaultValue" : outputlayer;
    $(selected).prev().children().children().eq(2).val('Latitude');
    $(selected).prev().children().children().eq(4).val('Longitude');
    vectorlayer.destroyFeatures();
    drawFeature.activate();

    map.removeLayer(outputlayer);    
}
于 2012-12-04T15:02:12.960 に答える