簡體   English   中英

getElementById的問題

[英]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函數。 執行該功能時,用戶未輸入任何內容。 這就是為什么urlnull原因。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM