2017-06-04 20 views
0

選択ボックスのデフォルトで選択されたオプションを一度削除するjQueryを作成しようとしています。現在は$("#edit-field option:selected").remove(); removed = true;};が動作していますが、if/elseステートメントに入れるのに問題があります。

$(document).ready (function remove() { 
"use strict"; 
var removed = false; 
if (removed = false) { 
$("#edit-field option:selected").remove(); removed = true;}; else { 
remove();}} 

誰も私のコードに間違いがありますか?

+2

'=' '比較のために...あなたが提供 – CBroe

答えて

2

使用しなければならない比較演算子です。

=常には値を割り当てますが、それを比較に使用することはできません。値を比較するには==または===を使用してください。だから、簡単な修正は次のようになります。if (x == true) ...またはif (x == false) ...などの

if(removed === false) 

しかし...比較はアンチパターンです。それをしないでください。 if (x) ...またはif (!x) ...で十分です。

また、コード全体が不必要です。何かを削除したかどうかを格納するグローバル変数を保持しないでください。それは必要ではありません。

jQueryは、何かを何度も削除しようとしたり、まったくないものを削除しようとすると、エラーを生成しません。これはずっと優れている:

$(document).ready(function remove() { 
    $("#edit-field option:selected").remove(); 
}); 
+0

のコードサンプルでは、​​私はいくつかのために始めたものとまったく同じ代入演算子、あなたは=='欲しいです理由jQueryは選択ボックス内のすべての値を1つずつ削除していましたが、それはまだあります。あなたが私の問題を解決したにもかかわらず、この '$(document).ready(function remove(){ $("##edit-field option:selected ")}を使用して解決しました。 ') ");); });' – Krypton

+0

あなたは結局それが働いていると聞いてよかった! – Tomalak

2
if (removed = false) 

これは間違っていますが、変数にfalseの値を再割り当てしています。

if(removed === false) 

は、あなたがあなたのエラーは非常に一般的な初心者エラーです

https://www.w3schools.com/js/js_comparisons.asp

関連する問題