getElementById问题

时间:2014-07-29 05:59:04

标签: javascript getelementbyid

我编写了以下代码来显示带有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>

4 个答案:

答案 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;