2017-07-30 161 views
2

編輯 - 求解 //正如用戶Win在答案中指出的那樣,如果一個函數被命名爲click,並且您嘗試用HTML按鈕調用它,那麼它會將該函數與HTML按鈕的內置/標準「點擊()」功能If/else with button and input

任何人都可以弄清楚,爲什麼(在這個世界上)這不起作用? Chrome,我的IDE和/或JSFiddle中沒有任何錯誤報告。

HTML

<!DOCTYPE html> 
<html> 
<head> 
    <script src="app.js"></script> 
</head> 
<body> 
    <input id="search" type="text" name="input" placeholder="Search.."> 
    <button onclick="click()" value="Submit">Get weather</button> 
</body> 
</html> 

的JavaScript

function click() { 
    if (document.getElementById("search").value == "New York") { 
    console.log("Loading weather for New York..."); 
    } else { 
    console.log("City name isn't valid. Try again"); 
    } 
} 

的jsfiddle:https://jsfiddle.net/nd6f5pp7/

在此先感謝。

回答

5

不要調用函數點擊,它會與obj原型混淆。

// Grab Input from DOM 
 
var iptSearch = document.getElementById('search') 
 

 
// Grab Submit button from DOM 
 
var btnGetWeather = document.getElementById('get-weather'); 
 

 
// Add Event Listener 
 
btnGetWeather.addEventListener('click', function() { 
 
    if (iptSearch.value === "New York") { 
 
    console.log("Loading weather for New York..."); 
 
    } else { 
 
    console.log("City name isn't valid. Try again"); 
 
    } 
 
});
<input id="search" placeholder="Search..."/> 
 
<button id="get-weather">Get Weather</button>

或者,如果你想跟着你給出的示例代碼。使用如下:

function getWeather() { 
 
    if (document.getElementById('search').value === "New York") { 
 
    console.log("Loading weather for New York..."); 
 
    } else { 
 
    console.log("City name isn't valid. Try again"); 
 
    } 
 
}
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <script src="app.js"></script> 
 
</head> 
 

 
<body> 
 
    <input id="search" type="text" name="input" placeholder="Search.."> 
 
    <button onclick="getWeather()">Get weather</button> 
 
</body> 
 

 
</html>

+0

謝謝,不知道這是不允許的。當SO讓我這樣做時,將在10分鐘內接受你的答案。 – thesystem

+1

更好地使用監聽器而不是'onclick' – easa

+1

@easa這是真的,讓我們更新答案。 :) – Win