【发布时间】:2019-02-12 08:08:03
【问题描述】:
我想构建一个输入文本字段,单击该字段时将显示通过内容 API 获取的值列表。当代码到达 forEach 循环时,它似乎不起作用。它工作正常,直到 initArray。 forEach 循环似乎不起作用。我在 initArray 的 console.log 中看到了我的所有数据。
我错过了什么吗?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title> URL Builder </title>
<link rel="stylesheet" href="https://contentful.github.io/ui-extensions-sdk/cf-extension.css">
<script src="https://unpkg.com/contentful-ui-extensions-sdk@3"></script>
</head>
<body>
<form id="urlSearchContainer">
<div class="cf-form-field">
<input list="urlDataList" type="search" placeholder="Type your url here..." id="urlBuilder" class="cf-form-input">
<datalist id="urlDataList">
</datalist>
</div>
</form>
<script>
"use strict"
window.contentfulExtension.init(function(api) {
api.window.startAutoResizer();
// Set variables
var urlDataList = document.getElementById("urlDataList");
var urlInput = document.getElementById("urlBuilder");
function getUrlData(){
//api.space.getEntries({'content_type[ne]': 'page-MBH'})
var urlDataArray = [];
api.space.getEntries()
.then(function (entries) {
entries.items.forEach(function (entry) {
if(entry.fields.url){
var urlData = entry.fields.url.en
urlDataArray.push(urlData);
//console.log('urldata', urlDataArray);
}
})
})
return urlDataArray;
};
function createUrlDropdown(){
// Init data obj
var data = getUrlData();
var initArray = typeof data === 'object' && data instanceof Array && data.length > -1 ? data : [];
console.log('ARRAY:: ', initArray);
//Create and append url data list
initArray.forEach(function(item) {
console.log('item:: ', item);
//Create a new <option> element.
var option = document.createElement('option');
console.log('option', option);
option.value = item;
console.log('value', option);
// Add the <option> element to the <datalist>.
urlDataList.appendChild(option);
});
for(i = 0; i < initArray.length; i++) {
console.log('obj');
var option = document.createElement("option");
option.value = initArray[i];
urlDataList.appendChild(option);
}
}
document.getElementById("urlBuilder").addEventListener("click", function(){
createUrlDropdown();
});
});
</script>
</body>
</html>
感谢任何帮助!
【问题讨论】:
标签: javascript html contentful