Javascript 解析到元素I类型的动态链接

Javascript 解析到元素I类型的动态链接,javascript,dom,Javascript,Dom,我的目标是在搜索栏中键入股票符号,并以动态方式将链接附加到结果。例如,当我搜索FLWS时,会出现一个元素,如下所示,当我单击该元素时,它会将我带到特定页面。因此,当我在搜索栏中键入FLWS时,它允许我转到这个url:当我键入MSFT时,它允许我转到 先谢谢你 我的朋友: 所以我的问题是如何创建一个解析到我键入的元素的动态链接。到目前为止,我有: <!DOCTYPE html> <html> <head> <!-- inserting jquer

我的目标是在搜索栏中键入股票符号,并以动态方式将链接附加到结果。例如,当我搜索FLWS时,会出现一个元素,如下所示,当我单击该元素时,它会将我带到特定页面。因此,当我在搜索栏中键入FLWS时,它允许我转到这个url:当我键入MSFT时,它允许我转到

先谢谢你

我的朋友:

所以我的问题是如何创建一个解析到我键入的元素的动态链接。到目前为止,我有:

<!DOCTYPE html>
<html>
<head>
    <!-- inserting jquery -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

    <style>
        * {
            box-sizing: border-box;
        }

        #myInput {
            //background-image: url('/css/searchicon.png');
            background-position: 10px 12px;
            background-repeat: no-repeat;
            width: 100%;
            font-size: 16px;
            padding: 12px 20px 12px 40px;
            border: 1px solid #ddd;
            margin-bottom: 12px;
        }

        #myUL {
            list-style-type: none;
            padding: 0;
            margin: 0;
        }

        #myUL li a {
            border: 1px solid #ddd;
            margin-top: -1px; /* Prevent double borders */
            background-color: #f6f6f6;
            padding: 12px;
            text-decoration: none;
            font-size: 18px;
            color: black;
            display: block
        }

        #myUL li a:hover:not(.header) {
            background-color: #eee;
        }
    </style>
    </head>
    <body>
    <h2>My Portfolio</h2>
    <input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for a Stock Symbol.." title="Type in a name">
    <ul id="myUL">
        <li><a href="#">Christina</a></li>
        <li><a href="#">Cindy</a></li>

        <!-- Starting the Stock Test -->
        <li><a href="#">FLWS</a></li>
    </ul>
    <script>

        function myFunction() {
            var input, filter, ul, li, a, i;
            input = document.getElementById("myInput");
            console.log(input);
            filter = input.value.toUpperCase();
            ul = document.getElementById("myUL");
            li = ul.getElementsByTagName("li");
            for (i = 0; i < li.length; i++) {
                a = li[i].getElementsByTagName("a")[0];
                if (a.innerHTML.toUpperCase().indexOf(filter) > -1) {
                    li[i].style.display = "";
                } else {
                    li[i].style.display = "none";

                }
            }
            //Returning the result
            console.log(filter);

            var parser = document.createElement('a');
            //End result should look like: https://api.iextrading.com/1.0/stock/VNOM/quote
            parser.href = "https://api.iextrading.com/1.0/stock/";

            parser.StockName = filter;
            console.log("Parser StockName: " + parser.StockName);

            var url = parser.href;
            var stockName = parser.StockName;
            var result = url + stockName;

            //concat quote to the end of the url
            var quoteAdd = "/quote";
            result = result + quoteAdd
            console.log("quote: " + quoteAdd);
            console.log("Final url: " + result);

            //counting letters in the filter
            var count = filter.replace(/[^A-Z]/gi, "").length;
            console.log(count);
            if (count == 2 || count == 3 || count == 4 && filter){
                if($("#myUL").length) {
                    console.log("nested if result: " + result);

                    /*  I need to find the element that i searched for, then add the result url to the button.
                        For example, when i search for FLWS, i click on that tag to take me to a new page.
                     */

                    ul = document.getElementById("myUL");
                    li = ul.getElementsByTagName("li");
                    console.log(li);

                    var result1 = document.getElementById('li');
                    console.log("nested result After: " + result);
                    console.log("result1: " + result1);
                }
            }
            return result;
        }
    </script>
</body>
</html>

* {
框大小:边框框;
}
#我的输入{
//背景图片:url('/css/searchicon.png');
背景位置:10px 12px;
背景重复:无重复;
宽度:100%;
字体大小:16px;
填充:12px 20px 12px 40px;
边框:1px实心#ddd;
边缘底部:12px;
}
#密尔{
列表样式类型:无;
填充:0;
保证金:0;
}
#李美儿{
边框:1px实心#ddd;
页边距顶部:-1px;/*防止双边框*/
背景色:#f6f6f6;
填充:12px;
文字装饰:无;
字号:18px;
颜色:黑色;
显示:块
}
#myUL li a:悬停:非(.header){
背景色:#eee;
}
我的投资组合
函数myFunction(){ var输入、滤波器、ul、li、a、i; 输入=document.getElementById(“myInput”); 控制台日志(输入); filter=input.value.toUpperCase(); ul=document.getElementById(“myUL”); li=ul.getElementsByTagName(“li”); 对于(i=0;i-1){ 李[i].style.display=“”; }否则{ li[i].style.display=“无”; } } //返回结果 控制台日志(过滤器); var parser=document.createElement('a'); //最终结果应该如下所示:https://api.iextrading.com/1.0/stock/VNOM/quote parser.href=”https://api.iextrading.com/1.0/stock/"; parser.StockName=过滤器; log(“解析器StockName:+Parser.StockName”); var url=parser.href; var stockName=parser.stockName; var result=url+stockName; //将引用添加到url的末尾 var quotead=“/quote”; 结果=结果+quoteAdd 控制台日志(“quote:”+quoteAdd); log(“最终url:+结果”); //在过滤器中计数字母 var count=filter.replace(/[^A-Z]/gi,“”)。长度; 控制台日志(计数); if(计数=2 | |计数=3 | |计数=4&&filter){ 如果($(“#myUL”).长度){ log(“嵌套的if result:+result”); /*我需要找到我搜索的元素,然后将结果url添加到按钮。 例如,当我搜索FLWS时,我单击该标记将我带到一个新页面。 */ ul=document.getElementById(“myUL”); li=ul.getElementsByTagName(“li”); 控制台日志(li); var result1=document.getElementById('li'); log(“在:+结果之后嵌套的结果”); console.log(“result1:+result1”); } } 返回结果; }
在url构建之前,您的代码都是可用的。您只需要将结果添加到文档中。请看最后两行

if (count == 2 || count == 3 || count == 4 && filter){
    if($("#myUL").length) {
        console.log("nested if result: " + result);

        /*  I need to find the element that i searched for, then add the result url to the button.
            For example, when i search for FLWS, i click on that tag to take me to a new page.
         */

        ul = document.getElementById("myUL");
        li = ul.getElementsByTagName("li");
        console.log(li);

        var result1 = document.getElementById('li');
        console.log("nested result After: " + result);
        console.log("result1: " + result1);
        var resultDiv = "<li><a href=" + "'" + result + "'" + ">" + filter + "</a></li>"
        $("#myUL").append(resultDiv);
    }
}
if(计数=2 | |计数=3 | |计数=4&&filter){
如果($(“#myUL”).长度){
log(“嵌套的if result:+result”);
/*我需要找到我搜索的元素,然后将结果url添加到按钮。
例如,当我搜索FLWS时,我单击该标记将我带到一个新页面。
*/
ul=document.getElementById(“myUL”);
li=ul.getElementsByTagName(“li”);
控制台日志(li);
var result1=document.getElementById('li');
log(“在:+结果之后嵌套的结果”);
console.log(“result1:+result1”);
var resultDiv=“
  • ” $(“#myUL”).append(resultDiv); } }
    您是否介意创建一个代码片段,而不是将源代码转储到您的问题中。这将允许我和其他人运行源代码,以便更好地理解问题,并可能解释解决方案无法正常运行的原因。谢谢,当然可以。给我一点时间我加上了JSFIDLE