Это связано с точкой, в которой d связан. Лямбда-функции все указывают на переменную d
, а не на текущее значение , поэтому, когда вы обновляете d
в следующей итерации, это обновление просматривается через все ваши функции.
Для более простого примера:
funcs = []
for x in [1,2,3]:
funcs.append(lambda: x)
for f in funcs:
print f()
# output:
3
3
3
Вы можете обойти это, добавив дополнительную функцию, например:
def makeFunc(x):
return lambda: x
funcs = []
for x in [1,2,3]:
funcs.append(makeFunc(x))
for f in funcs:
print f()
# output:
1
2
3
Вы также можете зафиксировать область видимости внутри выражения лямбда
lambda bound_x=x: bound_x
. Однако в целом это не очень хорошая практика, поскольку вы изменили подпись своей функции.
Если сценарии включены, , noscript элемент определяется как содержащий только текст - хотя это должно быть текст parsable с некоторыми ограничениями на содержание. Имея это в виду, необходимо быть в состоянии извлечь текст, проанализировать его и затем найти желаемый элемент. Элементарный пример этого следует:
var nos = document.getElementsByTagName("noscript")[0];
// in some browsers, contents of noscript hang around in one form or another
var nosHtml = nos.textContent||nos.innerHTML;
if ( nosHtml )
{
var temp = document.createElement("div");
temp.innerHTML = nosHtml;
// lazy man's query library: add it, find it, remove it
document.body.appendChild(temp);
var ex = document.getElementById("example");
document.body.removeChild(temp);
alert(ex.innerHTML);
}
Примечание это, когда я первоначально записал этот ответ, вышеупомянутое, отказавшее в Google Chrome; доступ к noscript содержанию, кажется, несколько лучше поддерживается в эти дни, но это все еще кажется мне пограничным случаем, который, возможно, несколько более вероятен, чем другие элементы показать ошибки - я избежал бы его, если у Вас есть другие опции.
От спецификация HTML 4.0:
элемент NOSCRIPT позволяет авторам обеспечивать альтернативное содержание, когда сценарий не выполняется. Содержание элемента NOSCRIPT должно только быть представлено осведомленным о сценарии агентом пользователя в следующих случаях:
- агент пользователя настроен для не оценки сценариев.
- агент пользователя не поддерживает язык сценариев, вызванный элементом СЦЕНАРИЯ ранее в документе.
мне кажется, что это подразумевает, что все содержание тега NOSCRIPT (в этом случае, Ваше отделение) проигнорировано в целом, если сценарии включены в браузере. Вы проверили, что отделение "в качестве примера" доступно через DOM вообще в Вашем случае?
Тестируя с Firefox 3.0.7, Safari 3.2.2 и MSIE 7.0.5730.13 (все на WinXP SP3) кажется, что все в <noscript>
теги полностью опущено от дерева DOM.
может быть возможно получить доступ <noscript>
сам элемент, однако, и затем использовать методы DOM для изменения его дочерних элементов.