非常感谢您的帮助
我有以下代码:假设从网站获取元标记:
function calculate() {
// This gets the title:
g_title = ('' + document.title + '');
g_title_count = ('' + document.title.split(' ').length + '');
g_title_length = ('' + document.title.length + '')
// This checks all the MetaTags:
g_metadata = document.getElementsByTagName("meta")[i];
g_keywords = "test";
if (typeof g_metadata != 'undefined') {
if (g_metadata) {
var i = 0;
for (i = 0; i <= 10; i++) {
if (g_metadata.name == 'keywords') {
g_keywords[i] = (g_metadata.name[i] + g_metadata.content[i]);
}
}
}
}
}
此值当前返回上面代码中指定的“test”:
document.form1.g_keywords.value = g_keywords
但是我需要它来捕获关键字元标记,描述和标题。
<title>Test 1</title>
<meta name="keywords"content="test2" />
<meta name="description" content="test3" />
然后将其写入表单:
<textarea name="g_keywords" id="g_keywords" cols="80" rows="5" onchange="calculate(this.form1)"></textarea>
目前适用于Title
但不能获取<meta name="keywords" content="" >
代码
if (g_metadata.name == 'keywords') {
g_keywords[i] = (g_metadata.name[i] + g_metadata.content[i]);
}
我通过创建上面的内容尝试了它但不确定如何执行它...
请帮忙 - 谢谢
答案 0 :(得分:6)
// Collect all keywords
g_metadata = document.getElementsByTagName("meta");
g_keywords = []; // should be an array
var len = g_metadata.length;
for (var i = 0; i < len; i++) {
if (g_metadata[i].name == 'keywords') {
g_keywords = g_metadata[i].content.split(",");
}
}
我认为应该只有一个关键字<meta>
标记,并且所有关键字都以逗号分隔。
的 [Demo] 强>
答案 1 :(得分:2)
您for
循环有点偏离,您尝试在创建之前使用i
,这应该是您所追求的:
var g_keywords = [], g_description = "No description found",
g_metadata = document.getElementsByTagName("meta")
for (var i=0;i<=g_metadata.length;i++);{
switch(g_metadata[i].name) {
case 'keywords':
g_keywords.push(g_metadata[i].content);
break;
case 'description':
g_description = g_metadata[i].content;
break;
}
}
我不确定您使用关键字和元数据后的情况,看起来您想要一个关键字数组和一个描述字符串,这就是上面所做的。它循环遍历<meta>
标记,如果name
是“关键字”,它会将.content
推送到g_keywords
数组...如果它是“描述”则设置{{ 1}}到该标记的g_description
。