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