Javascript CSS选择器无法使用jQuery工作
项目说明如下: 创建一个简单的网页应用程序,允许用户输入一个或多个股票代码和 显示这些股票的价格信息。 •数据必须来自RESTAPI(),可以自由使用并返回JSON 格式化输出Javascript CSS选择器无法使用jQuery工作,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,项目说明如下: 创建一个简单的网页应用程序,允许用户输入一个或多个股票代码和 显示这些股票的价格信息。 •数据必须来自RESTAPI(),可以自由使用并返回JSON 格式化输出 这是到目前为止我的代码,我还没有弄明白它 更新 当用户键入符号时,它不会在控制台上显示任何内容。如何使用户输入的每个符号都从url获取价格并给出价格 $(文档).ready(函数(){ $('searchstock')。在('click',function()上{ 让requestData=$('search').va
这是到目前为止我的代码,我还没有弄明白它
更新 当用户键入符号时,它不会在控制台上显示任何内容。如何使用户输入的每个符号都从url获取价格并给出价格
$(文档).ready(函数(){
$('searchstock')。在('click',function()上{
让requestData=$('search').val();
让resultElement=$('stock');
//向RESTAPI发出请求
$.ajax({
网址:'https://www.alphavantage.co/query?function=BATCH_STOCK_QUOTES&symbols=“+requestData+”&apikey=SB1CZMKQ6Q5283QZ',
方法:“get”,
数据:{
符号:请求数据
},
数据类型:“json”,
成功:功能(数据){
控制台日志(数据);
html('price:'+data.Stock_Quotes[0])
}
});
});
});代码>
股票
输入符号
输入符号以获取价格
获得价格
您希望此行与id属性设置为“搜索”的输入匹配:
jQuery select函数需要一个作为其第一个参数。现在在您的代码中,您为$
函数提供的CSS选择器是'search'
,这实际上意味着“请匹配名称为“search”的元素”,而不是“匹配id属性设置为“search”的元素”。
你看到区别了吗
只需更改$('search').val()
到$('#search').val()代码>正如#
告诉匹配“id”属性一样
这一行也是如此
let resultElement = $('stock');
您还有一个属性名称问题
查询“MSFT”将返回如下结果:
{
// …
"Stock Quotes": [
{
"1. symbol": "MSFT",
"2. price": "93.0300",
"3. volume": "--",
"4. timestamp": "2018-03-02 15:59:59"
}
]
}
如您所见,数据对象属性称为“股票报价”,而不是将其放入代码中时的Stock\u Quotes
由于属性名称包含空格,因此访问此条目需要方括号表示法。检索第一个结果的价格如下所示:
resultElement.html('price:'+data[“Stock Quotes”][0][“2.price”])
如果希望在用户键入符号时执行搜索/ajax调用,请尝试使用oninput而不是onclick
$('search')。在('input',函数(e)上{
var resultElement=$(“#股票”),
requestData=$(this.val();
//向RESTAPI发出请求
$.ajax({
网址:'https://www.alphavantage.co/query?function=BATCH_STOCK_QUOTES&symbols=“+requestData+”&apikey=SB1CZMKQ6Q5283QZ',
方法:“get”,
数据:{
符号:请求数据
},
数据类型:“json”,
成功:功能(数据){
控制台日志(数据);
html('price:'+数据[“股票报价”][0][“2.price”])
}
});
});代码>好的,那么你的问题是什么?“无法解决”-解决什么?发生了什么?预期的行为是什么?它不起作用,所以你看到我没有看到的任何NUG吗?或者您是否有其他/更好的方法来执行此操作?我已更新了我的问题。请不要编辑您的问题以删除实际问题。这被认为是“故意破坏”。另外,请不要编辑代码来“修复”它,因为这样答案就没有意义了。@ryan我已经编辑了我的答案。这是一个琐碎的调试,深入了解文档将帮助您对这里发现的问题感到更舒服。如果您的问题已解决,请注意通过勾选对您帮助最大的答案,将您的问题设置为已解决。哦我是唯一的答案@ryan我建议您更改的内容将使您的代码正常工作。1-替换id属性“搜索”
→ <代码>“#搜索”
,“股票”
→ <代码>“#股票”
,2-将行resultElement.html(…)
替换为resultElement.html('price:'+数据[“股票报价”][0][“2.price”])
。3-重新运行代码段,用“MSFT”和voilá填充输入。4-勾选答案。首先,既然您的初始问题已经解决,您应该通过勾选我的答案将其标记为已解决。“股票报价”
是一个对象数组。所以你所要做的就是使用。例如,在每次迭代中,您可以在表中创建一个
元素。在文本字段中填入MSFT,FB
{
// …
"Stock Quotes": [
{
"1. symbol": "MSFT",
"2. price": "93.0300",
"3. volume": "--",
"4. timestamp": "2018-03-02 15:59:59"
}
]
}