如何将数组从html返回到JavaScript?

如何将数组从html返回到JavaScript?,javascript,html,Javascript,Html,我有一个包含html标记中的项目的列表。列表如下所示: ['pizza', 'pasta', 'pizza', 'pizza', 'pasta'] 这通过以下标签显示在我的网页中: <p id='list'>['pizza', 'pasta', 'pizza', 'pizza', 'pasta']</p> 问题是它返回一个字符串。当请求类型时,它是未定义的。。。 如果我们要记录 list[0] 这返回[ 要在JavaScript中将列表作为数组获取,我需要做什么?如

我有一个包含html标记中的项目的列表。列表如下所示:

['pizza', 'pasta', 'pizza', 'pizza', 'pasta']
这通过以下标签显示在我的网页中:

<p id='list'>['pizza', 'pasta', 'pizza', 'pizza', 'pasta']</p>
问题是它返回一个字符串。当请求类型时,它是未定义的。。。 如果我们要记录

list[0]
这返回[


要在JavaScript中将列表作为数组获取,我需要做什么?

如果列表完全如图所示,并且您无法将其更改为有效的JSON,则可以使用
replace
'
替换为
”,这将使其成为有效的JSON。但是,如果字符串中有
\
(您没有显示任何),它们将中断,因此此方法仅适用于简单情况:

var list = JSON.parse(document.getElementById('list').textContent.replace(/'/g, '"'));
这将导致
list
成为字符串数组


但是,理想情况下,我建议以不同的方式将数据嵌入页面,或者至少更新嵌入的内容以使其成为有效的JSON,这样我们就不必做
替换
,从而担心
\'
的可能性…

这很容易

1) 用选择器抓住你的元素

var p = document.querySelector('#list');
2) 抓取innerHtml,您正确地发现它是一个字符串

var text = p.innerHTML;
3) 神奇的是你可以把字符串解析成JSON,但是单引号在JSON中是无效的,所以必须用双引号替换

var ary = JSON.parse(p.replace(/\'/g, '\"'));
console.log(ary[0]) // => 'pizza'
编辑:如果您不想替换引号使其成为有效的JSON,您可以使用另一个内置方法(但它是不安全的)。Eval将传递的任何内容解释为JavaScript本身,以便它能够运行使其不安全的函数等

var g = eval("['4']");
console.log(g[0]); // => '4'

如果输入保持相同的格式,则可以使用正则表达式对其进行解析

获取标记的内容

let list = document.getElementById('list').innerHTML //"['pizza', 'pasta', 'pizza', 'pizza', 'pasta']";
替换引号和括号

list = list.replace(/[\]\[']/g,"");

然后用
拆分字符串,它将返回数组

console.log(list.split(","));
输出

[ 'pizza', ' pasta', ' pizza', ' pizza', ' pasta' ]
请查收

var arraylist=document.getElementById('list').innerHTML;
log(“arraylist:”,arraylist);
var ari=JSON.parse(arraylist);
console.log(“第一个值:”,ari[0]);

[“服务1”、“服务2”、“服务3”]

修复HTML,使其包含JSON,然后解析JSONOr,或者理想情况下,以另一种方式将数据嵌入页面,而不是作为页面上的文本。是的,这很有效。谢谢!我确实要寻找一种不同的方式来获取数据,但至少现在它可以工作…再次感谢!顺便说一句,没有理由在yo中使用反斜杠ur
replace
call(他们中的任何一个)。在降级应答之前解释。
console.log(list.split(","));
[ 'pizza', ' pasta', ' pizza', ' pizza', ' pasta' ]