2016-11-16 58 views
1

這不是實際的情況,但我必須使用如下的檢查功能,並結合地圖對象。javascript地圖對象刪除不起作用

<!DOCTYPE html> 
<html> 
<head> 
<title></title> 
</head> 
<body> 
<form action="" method="post" onsubmit="return check()"> 
<input type="text" name="name" id="one" oninput="change(this)" /> 
<input type="text" name="password" id="two" oninput="change(this)" /> 
<input type="submit" name="submit" value="submit" /> 
</form> 
<script type="text/javascript"> 
var map = new Map(); 
function change(obj){ 
    var id = obj.id; 
    if(obj.value != ""){ 
     map.set(id,obj.value); 
     console.log("added key "+obj.id+" value "+obj.value+" size "+map.size); 
    }else{ 
     map.delete[id]; 
     console.log("removed key "+obj.id+" value "+obj.value+" size "+map.size); 
    } 
} 

function check(){ 
    if(map.size != 2){ 
     alert("enter all values"); 
     return false; 
    } 
} 
</script> 
</body> 
</html> 

在表單標籤的行動是有意空在這裏

與上面的代碼,當我在任何一個文本框中輸入值,該值被添加到地圖,但是當我再次清除,值對不會從地圖上刪除。地圖的大小在刪除時不會減少(或者可能是對象未被刪除)。因此,一旦我在輸入內容後清除了字段,地圖的大小仍然是2,並且提交沒有任何警報。幫我。邏輯,我必須在別的地方使用它才能使它工作。提前致謝。

+0

'刪除[ID]''VS刪除(ID)'? – marekful

+0

@marekful謝謝marekful。這太愚蠢了。對不起。 – Krishna

回答

1

Map.prototype.delete()是需要通過傳遞其參數圓括號(),不方括號[]被調用的函數:

map.delete(id); 
+0

oops。抱歉。這對這個社區來說太愚蠢了。解決了 – Krishna