如何使此函数应用于以下 JsonML 中的每个匹配元素?
How to make this function apply on each matched element in the following JsonML?
我通过 markdown-js 生成了以下 JsonML:
[ 'markdown',
[ 'para', 'This is a paragraph.' ],
[ 'para', 'Another paragraph' ] ]
我想要做的是将 class noind
添加到每个段落标记。完整代码:
var text = "This is a paragraph.\n\n" +
"Another paragraph"
// parse the markdown into a tree and grab the link references
var tree = md.parse(text)
var refs = tree[1]
//console.log(refs)
;(function update_paras(jsonml) {
if (jsonml[1][0] === 'para') {
var par = jsonml[1]
par.splice(1,0,{'class': 'noind'})
}
})(tree)
var html = md.renderJsonML(md.toHTMLTree(tree))
console.log(html)
目前 class 仅添加到第一段:
<p class="noind">This is a paragraph.</p>
<p>Another paragraph</p>
我怎样才能将 class 添加到所有这些?
编辑:
在 Gitub 的示例中,他们做了这样的事情(使用 link_refs):
if (jsonml[0] === "link_ref") {
// some code
} else if (Array.isArray(jsonml[1])) {
jsonml[1].forEach(find_link_refs)
} else if (Array.isArray(jsonml[2])) {
jsonml[2].forEach(find_link_refs)
}
虽然我不太明白代码。当我尝试同样的方法时,它没有用(仍然只有第一段得到 class)。
不是专家,但将其格式化为答案比评论更好。
您是否尝试过创建一个遍历 jsonml 数组中所有元素的循环(现在它只读取第一个元素)?像这样:
;(function update_paras(jsonml) {
for (x = 1; x < jsonml.length; x++) {
if (jsonml[x][0] === 'para') {
var par = jsonml[x]
par.splice(1,0,{'class': 'noind'})
}
}
})(tree)
我通过 markdown-js 生成了以下 JsonML:
[ 'markdown',
[ 'para', 'This is a paragraph.' ],
[ 'para', 'Another paragraph' ] ]
我想要做的是将 class noind
添加到每个段落标记。完整代码:
var text = "This is a paragraph.\n\n" +
"Another paragraph"
// parse the markdown into a tree and grab the link references
var tree = md.parse(text)
var refs = tree[1]
//console.log(refs)
;(function update_paras(jsonml) {
if (jsonml[1][0] === 'para') {
var par = jsonml[1]
par.splice(1,0,{'class': 'noind'})
}
})(tree)
var html = md.renderJsonML(md.toHTMLTree(tree))
console.log(html)
目前 class 仅添加到第一段:
<p class="noind">This is a paragraph.</p>
<p>Another paragraph</p>
我怎样才能将 class 添加到所有这些?
编辑:
在 Gitub 的示例中,他们做了这样的事情(使用 link_refs):
if (jsonml[0] === "link_ref") {
// some code
} else if (Array.isArray(jsonml[1])) {
jsonml[1].forEach(find_link_refs)
} else if (Array.isArray(jsonml[2])) {
jsonml[2].forEach(find_link_refs)
}
虽然我不太明白代码。当我尝试同样的方法时,它没有用(仍然只有第一段得到 class)。
不是专家,但将其格式化为答案比评论更好。
您是否尝试过创建一个遍历 jsonml 数组中所有元素的循环(现在它只读取第一个元素)?像这样:
;(function update_paras(jsonml) {
for (x = 1; x < jsonml.length; x++) {
if (jsonml[x][0] === 'para') {
var par = jsonml[x]
par.splice(1,0,{'class': 'noind'})
}
}
})(tree)