Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript/HTML搜索.js文件_Javascript_Html - Fatal编程技术网

使用Javascript/HTML搜索.js文件

使用Javascript/HTML搜索.js文件,javascript,html,Javascript,Html,我有一个.js文件,如图所示(为简化而缩短) 我需要做一个功能,通过查看该文件,并允许我选择其中一首歌曲,因为关键字已在其中找到。到目前为止,我得到的是: 此函数获取一个字符串,使用循环查看文件,目前,如果找到歌曲,则会提醒歌曲名称 function searchIt("str") { for (var i in list) { if(albums[i].lyrics.indexOf(str)){ alert(albums.tracks.title) } }

我有一个.js文件,如图所示(为简化而缩短)

我需要做一个功能,通过查看该文件,并允许我选择其中一首歌曲,因为关键字已在其中找到。到目前为止,我得到的是:

此函数获取一个字符串,使用循环查看文件,目前,如果找到歌曲,则会提醒歌曲名称

function searchIt("str") {
  for (var i in list) {
    if(albums[i].lyrics.indexOf(str)){
      alert(albums.tracks.title)
    }
  }
}

任何帮助都将不胜感激,因为我被困住了。谢谢

你有一大堆语法错误,你应该阅读MDN上的对象表示法和数组

我让它像这样工作

var tracks = [
            {
             title:"Dunnock",
             mp3:"Birdsong-Dunnock.mp3",
             lyrics:"The Dunnock or hedge sparrow has a fast warbling song often delivered from the top of a hedge or bush"
            },
            {
             title:"Robin",
             mp3 :"Birdsong-Robin.mp3",
             lyrics :"Unusually among British birds, both the male and the femaale robins sing"
            }
]

function searchIt(str) {
  for (i=0; i<tracks.length; i++) {
    if(tracks[i].lyrics.indexOf(str) >= 0){
      alert(tracks[i].title);
    }
  }
}

searchIt("Unusually");
var轨道=[
{
标题:“邓诺克”,
mp3:“鸟鸣邓诺克,mp3”,
歌词:“邓诺克麻雀或树篱麻雀有一首快速鸣唱的歌曲,通常从树篱或灌木丛的顶部发出”
},
{
标题:“罗宾”,
mp3:“鸟鸣罗宾,mp3”,
歌词:“在英国鸟类中,雄知更鸟和雌知更鸟都会唱歌”
}
]
函数searchIt(str){
对于(i=0;i=0){
警报(轨道[i]。标题);
}
}
}
搜索它(“异常”);
因此,在格式化数组中的语法错误之后,我使用了for循环(我认为您试图使用“for each”,我还不太熟悉)。我遍历数组,询问(str)是否匹配数组中每个元素的“歌词”中的任何内容,如果匹配,则返回0或更大。如果不是,则为-1。因此,如果它符合我的条件,那么它将返回曲目的标题


这是indexOf方法的文档

您的问题是什么?您应该始终确保没有语法错误。这些错误将在控制台中报告。您的语法错误出现在
function searchIt(“str”)
中,应该是
function searchIt(str)
。除此之外,如果字符串不包含
searchElement
,则返回
-1
,albums是对象还是数组?如果是对象,则缺少大括号
{}
。如果是数组,则不需要“tracks”键。该
列表
变量是什么?你还没有定义它。你是说相册吗?或
albums.tracks
?您的if条件
albums[i]。歌词.indexOf(str)
将始终返回真实值。如果您想检查str是否在相册[i].歌词中,请使用
相册[i].歌词.indexOf(str)>=0
谢谢您的帮助!我正在尝试将
曲目[I].title
加载到文本框中。我编写了
document.getElementById(“show”)=tracks[I].title。html代码是
。但这似乎不起作用,你能发现出什么问题吗?Np!如果你认为这有帮助的话,我会感谢你的支持。让我看一下bit@Pete我只知道如何在jQuery中实现它,这是链接,我发布的最后一个链接不好,我应该补充一下,据我所知,我不认为你可以替换输入bux中的内容。
var tracks = [
            {
             title:"Dunnock",
             mp3:"Birdsong-Dunnock.mp3",
             lyrics:"The Dunnock or hedge sparrow has a fast warbling song often delivered from the top of a hedge or bush"
            },
            {
             title:"Robin",
             mp3 :"Birdsong-Robin.mp3",
             lyrics :"Unusually among British birds, both the male and the femaale robins sing"
            }
]

function searchIt(str) {
  for (i=0; i<tracks.length; i++) {
    if(tracks[i].lyrics.indexOf(str) >= 0){
      alert(tracks[i].title);
    }
  }
}

searchIt("Unusually");