已编辑(HTML CODE) 我的if-else语句出现问题(我的代码尚未完成)
修改后的v2:
对不起,我今天很忙,所以我要澄清我的问题:当在框中键入内容时,我有3条if语句,“ 1st和3rd if”运行, 删除框中的文本时运行“第二个条件”,
并且因为我们已经有“ if语句”作为空白框(第二个if),所以这意味着我们可能会发生2种情况:用户键入类似于“ countries”数组 例如:A代表阿尔巴尼亚,V代表越南等... 而另一种情况是,用户在“国家”数组中输入的内容与任何国家/地区都不相同:例如Z(没有国家以Z开头)
所以问题在于,为什么同时发生2种情况(如果为1则发生第三例)
关于错误“未捕获的TypeError:无法读取null的属性'parentNode'”,我可以修复它吗?
这是我的HTML代码
<div class="test">
<form id="myInput">
<input autocomplete="off" type="text" name="myCountry" placeholder="Country">
</form>
<button style="padding-top:100px;" id="DCM">abc</button>
</div>
var countries = ["Albania","VietNam","Thai","Han","Lao"];
countries.map(function(x){ return x.toUpperCase() })
var searchinput = document.querySelector('#myInput input');
searchinput.addEventListener('keyup',function(e){
var searchChar = e.target.value.toUpperCase();
var parent = e.target.parentNode;
var c = document.createElement("div");
var a = document.createElement("div");
a.setAttribute("id", "autocomplete-list");
a.setAttribute("class", "autocomplete-items");
c.appendChild(a);
parent.appendChild(c);
for (var i = 0; i < countries.length; i++) {
if (countries[i].substr(0,searchChar.length).toUpperCase() == searchChar ) {
var b = document.createElement("div");
b.innerHTML = "<strong>" + countries[i].substr(0, searchChar.length) + "</strong>";
b.innerHTML += countries[i].substr(searchChar.length);
a.appendChild(b);
}
if(searchChar.length == 0) {
var y = document.getElementById("autocomplete-list");
y.parentNode.remove();
}
else{
console.log("He");
}
}
这段代码是关于自动完成的,当我在搜索栏中没有输入任何内容时,它将运行“ 2nd if”,它可以正常工作,但返回错误“ Uncaught TypeError:无法读取null的'parentNode'属性”
我的代码中还有1个问题,如果我键入内容,它将运行“ 1st if”或“ 3rd if”,因为在“ 1st if”中它具有条件,而“ 3rd if”是else,但是当我键入时某物,它们一起运行,除了“第二个条件”
对不起,我的英语不好,我不擅长写作
答案 0 :(得分:1)
您的问题不清楚。如果只希望三个if中的一个发生,则应该执行String s = "AYLAKPHKKDIV";
List<String> arr = new ArrayList<String>();
Matcher m = Pattern.compile(".{3,}?[KR](?!P)(?=.{4})|.+$").matcher(s);
while(m.find()) {
arr.add(m.group());
}
,因为您的代码未找到ID为autocomplete-list的元素,因此您将获得Cannot read property'parentNode'of null”。看到HTML,我们无法告诉您为什么会这样。Tyler Roper