我有一个fetch get请求,它解析页面并获取一些参数来生成新的url并将其插入输入字段
我有来自value1
、value2
、value3
的多个值
问题是我如何从这个参数中生成多个url并将其插入字段(字段应该动态生成)?
现在,带有窗体的窗口不会生成
如果我将break
放入循环,代码将生成带有窗体窗口,但只显示一个url
由于这段代码应该是窗口与形式和三个输入字段与url
var url = 'google.com/page1'
fetch(url, {
method: 'GET',
credentials: 'include',
})
.then(function(response) {
return response.text()
})
.then(function(html) {
var parser = new DOMParser();
var doc = parser.parseFromString(html, "text/html");
var value4 = 'test4';
var UrlArr = [];
if (condition) {
var name = doc.querySelectorAll("someClass");
for (var i = 0; i < name.length; i++) {
var allNames = name[i].outerHTML;
var value1 = allNames.match('MyregExp1')[0];
var value2 = allNames.match('MyregExp2')[0];
var value3 = allNames.match('MYregExp3')[0];
var newUrl = `google.com/?${value1}&${value2}&${value3}&test=${value4}`;
//brake
console.log(value1);
// something1
// something2
// something3
// etc...
console.log(value2);
// something11
// something22
// something33
// etc...
console.log(value3);
// something111
// something222
// something333
// etc...
UrlArr.push(newUrl);
console.log(UrlArr);
//first-array
// [google.com/?something1&something2&$something3&test=test4]
// 0: google.com/?something1&something2&$something3&test=test4
// 1: google.com/?something11&something22&$something33&test=test4
// 2: google.com/?something111&something222&$something333&test=test4
// second-array
// [google.com/?something1&something2&$something3&test=test4,google.com/?something11&something22&$something33&test=test4 ]
// 0: google.com/?something1&something2&$something3&test=test4
// 1: google.com/?something11&something22&$something33&test=test4
// 2: google.com/?something111&something222&$something333&test=test4
// third-array
// [google.com/?something1&something2&$something3&test=test4,google.com/?something11&something22&$something33&test=test4,google.com/?something111&something222&$something333&test=test4]
// 0: google.com/?something1&something2&$something3&test=test4
// 1: google.com/?something11&something22&$something33&test=test4
// 2: google.com/?something111&something222&$something333&test=test4
}
if (allNames.length >= 2) {
var newForm = Ext.create('Ext.form.Panel', {
title: 'Form',
width: 250,
autoHeight: true,
autoScroll: true,
bodyPadding: 10,
id: 'Form',
});
function newRadio() {
var radio = new Ext.form.Radio({
height: 40,
labelWidth: 110,
width: 20,
name: 'url',
});
return radio;
}
function newTextArea(id) {
var textArea = new Ext.form.TextArea({
fieldLabel: i + '_url',
height: 30,
labelWidth: 110,
width: 330,
submitValue: false,
readOnly: true,
autoScroll: true,
id: id
});
return textArea;
}
for (i = 0; i < name.length; i++) {
var id = i;
id = 'field_' + id;
var field = newTextArea(id);
var radioGr = newRadio();
var cont = NewContainer();
field.setValue(UrlArr);
newForm.add(cont);
}
function NewContainer() {
var container = new Ext.container.Container({
xtype: 'container',
layout: 'hbox',
items: [radioGr, field]
});
return container;
}
var win = new Ext.Window({
title: "Window",
layout: 'fit',
modal: 'true',
height: 500,
width: 385,
items: [newForm],
buttons: [{
text: "Confirm",
handler: function() {
//something handler
}
}]
});
win.show();
}
}
1条答案
按热度按时间kknvjkwl1#
您提供的代码中存在一些问题,例如:
Container
在radio
和textArea
之前创建。1.您的要求是在字段中设置newUrl,但是已经有一个for循环在更新该变量,并且它在for循环的作用域中。因此,您可以在第一个for循环的上方定义另一个变量作为数组,并将url推入该数组。
我已经修改了你的代码,参考下面,并为您的情况下提供了一个工作小提琴.