Если я правильно понимаю ваш вопрос и код, то я хочу сначала упомянуть три вещи, прежде чем делиться своим кодом / версией решения. Во-первых, для name
и value
вам, вероятно, не следует использовать метод getAttribute()
, поскольку они сами являются свойствами (именованной переменной) inputs
(с заданным индексом i
). Во-вторых, переменная, которую вы пытаетесь предупредить, является одним из нескольких избранных терминов в JavaScript, которые обозначены как «зарезервированные ключевые слова» или просто «зарезервированные слова». Как вы можете видеть в / в этом списке (по ссылке), new
является явно зарезервированным словом в JS и никогда не должно использоваться в качестве имени переменной. Для получения дополнительной информации, просто Google "зарезервированные слова в JavaScript". В-третьих, и, наконец, в самом предупреждении вы не указали точку с запятой. Одного и того иногда бывает достаточно, чтобы ваш код не работал так, как ожидалось. [В сторону: я говорю это не как совет, а скорее как наблюдение: JavaScript почти всегда прощает и позволяет иметь слишком много и / или ненужных точек с запятой, но обычно JavaScript также одинаково, если не более, беспощаден, если / когда отсутствует (любой из ) необходимые, обязательные точки с запятой. Поэтому, наилучшей практикой, конечно, является добавление точек с запятой только во всех необходимых точках и исключение их при любых других обстоятельствах. Но практически, если вы сомневаетесь, это, вероятно, не повредит вещам, добавив / включив дополнительный, но повредит игнорированием обязательного. Общие правила - это все объявления и назначения, заканчивающиеся точкой с запятой (например, назначения переменных, оповещения, операторы console.log и т. Д.), Но большинство / все выражения этого не делают (например, для циклов, в то время как циклы, выражения функций Just Saying.] Но Я отвлекся ..
function whenWindowIsReady() {
var inputs = document.getElementsByTagName('input');
var lengthOfInputs = inputs.length; // this is for optimization
for (var i = 0; i < lengthOfInputs; i++) {
if (inputs[i].name === "ans") {
var ansIsName = inputs[i].value;
alert(ansIsName);
}
}
}
window.onReady = whenWindowIsReady();
PS: вы использовали оператор двойного присваивания в вашем условном выражении, и в этом случае это не имеет значения, поскольку вы сравниваете строки, но в целом я считаю, что оператор тройного присваивания - это путь, и он более точен проверил бы, равны ли значения ЭКВИВАЛЕНТУ БЕЗ КОНВЕРСИИ ТИПА, что может быть очень важно для других примеров сравнений, поэтому важно указать. Например, 1 == "1" и 0 == false оба имеют значение true (когда обычно требуется, чтобы они возвращали false, поскольку значение слева не совпадает со значением справа без преобразования типов), но 1 === "1" и 0 === false оба являются ложными, как и следовало ожидать, потому что тройной оператор не полагается на преобразование типов при выполнении сравнений. Имейте это в виду на будущее.