[英]Issue with getElementById
我編寫了以下代碼來顯示帶有Javascript的alert(...)函數的輸入。
我的目的是將URL作為輸入並在新窗口中打開它。 我將其與“ http://”連接起來,然后執行window.open()。
但是,即使在連接后,我也只能在URL名稱中得到“ http://”,而不是完整的URL。 我怎樣才能解決這個問題?
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<body onload="onload();">
<input type="text" name="enter" value="" id="url_id">
<input type="button" value="Submit" onclick="func();">
</body>
<script type="text/javascript">
var url;
function onload() {
url = document.getElementById("url_id").value;
}
function func(){
var var1 = "http://";
var var2 = url;
var res = var1.concat(var2);
alert(var2);
//window.open(res);
}
</script>
</head>
</html>
僅在用戶將URL輸入到輸入字段中之后,才應該在onload()
調用它。 當然,它是一個空字符串,因為在將用戶將其放入onload()
之前,在用戶有機會輸入任何內容之前,您已將url
分配給#url_id
的值。
function func(){
var var1 = "http://";
url = document.getElementById("url_id").value;
var var2 = url;
var res = var1.concat(var2);
alert(var2);
//window.open(res);
}
其他人已經給出了解決方案,而您已經接受了。 但是他們都沒有告訴您代碼有什么問題 。
Fristly,你有一個body
的內部元素head
元素。 這是無效的標記。 請更正它:
<html>
<head>
<!-- this is a script -->
<script type="text/javascript">
// javascript code
</script>
</head>
<body>
<!-- this is an inline script -->
<script type="text/javascript">
// javascript code
</script>
</body>
</html>
其次,您需要了解瀏覽器窗口中JavaScript的執行順序。 考慮以下示例:
<html>
<body onload="alert('onload')">
<p>Lorem Ipsum</p>
<script type="text/javascript" >
alert('inline');
</script>
</body>
</html>
您將首先執行哪個alert
? 參見JSFiddle 。
如您所見,內聯JavaScript將首先執行,然后瀏覽器將調用<body onload=
任何代碼。
同樣,在加載頁面后立即onload
函數。 執行該功能時,用戶未輸入任何內容。 這就是為什么url
為null
原因。
function func()
var url = document.getElementById("url_id").value;
var fullUrl = "http://".concat(url);
alert(fullUrl);
// or window.open(fullUrl);
}
您不是在使用String
而是在使用Object
串聯。 特別是HTMLInputElement
對象。
如果要從文本輸入中獲取url,則需要與url.value
串聯。
如果未串聯,請使用:
var res = val1+val2.value;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.