Kenny, вы почти получили его, но есть две проблемы, которые указал @scharette:
for
цикл и удаление элемента списка не должны совпадать. Исправление состоит в том, чтобы использовать цикл while
и явно увеличивать индекс. Цикл while
менее эффективен, потому что он вызывает len()
несколько раз вместо этого один раз, но это то, что требуется для получения правильного результата. IndexError
. Это происходит только в последней строке. Мой способ справиться с этой проблемой - проигнорировать ошибку. При этом я изменил ваш код на:
with open('toy.txt' ,'r') as f:
pattern = f.read().splitlines()
print pattern
try:
i = 0
while i < len(pattern):
if pattern[i] in pattern[i+1]:
pattern.remove(pattern[i])
print pattern
i += 1
except IndexError:
pass
Как я понимаю, это то, что вы пытаетесь сделать,
var xmlHttp = null;
var formData = new FormData();
var form = document.getElementById('form_div');
var cln = form.cloneNode(true);
var saveForm = '<html><body>' + cln.innerHTML + '</body></html>';
formData.append("saveform", saveForm);
var xmlHttp = new XMLHttpRequest()
console.log(saveForm);
https://jsfiddle.net/VectorVortec/7ycbw0tg/7/
[ 114] Вопрос в том, заполнена ли форма во время клона. Если это так, то этот код работает. Если нет, то следует использовать выбранный ответ.
Вы не можете объединить узел со строкой, вам нужно использовать свойство innerHTML
, чтобы получить HTML.
Но HTML-код ввода не содержит изменений в его значении. Если вы хотите, чтобы это изменение было отражено, вам необходимо скопировать свойство value
в атрибут value
.
var cln = form.cloneNode(true);
cln.querySelector("#example").setAttribute("value", document.querySelector("#example").value);
var saveForm = '<html><body>' + cln.innerHTML + '</body></html>';