我编写了以下代码来显示带有Javascript&#39的警报(...)功能的输入。
我的目标是将URL作为输入并在新窗口中打开它。我将它连接到' http://'然后执行window.open()。
然而,我只是得到了' http://'在URL名称中,即使在连接之后,也不是完整的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>
答案 0 :(得分:2)
只有在用户将url输入到输入字段后,才能在onload()
中调用它。当然它是一个空字符串,因为您将url
分配给#url_id
的值,然后当用户将其放入onload()
时才有机会输入任何内容。
function func(){
var var1 = "http://";
url = document.getElementById("url_id").value;
var var2 = url;
var res = var1.concat(var2);
alert(var2);
//window.open(res);
}
答案 1 :(得分:1)
其他人提供了解决方案,您已经接受了解决方案。但他们都没有用你的代码告诉你错误是什么。
首先,您的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
函数。并且用户在执行该功能时没有输入任何内容。这就是为null
获得url
的原因。
function func()
var url = document.getElementById("url_id").value;
var fullUrl = "http://".concat(url);
alert(fullUrl);
// or window.open(fullUrl);
}
答案 2 :(得分:0)
您未与String
联系,但与Object
联网。特别是HTMLInputElement
对象。
如果您想要输入文本的网址,则需要与url.value
连接。
答案 3 :(得分:0)
如果没有连接,请使用:
var res = val1+val2.value;