2016-10-29 2 views
2

Я отработкой w3schools.com, и я вообще пытаюсь прочитать код и понять, что строка кода делает то, что, и я немного запутался по этому коду:JavaScript присваивание объяснение

function myFunction() { 
var message, x; 
message = document.getElementById("message"); 
message.innerHTML = ""; 
x = document.getElementById("demo").value; 
try { 
    if(x == "") throw "empty"; 
    if(isNaN(x)) throw "not a number"; 
    x = Number(x); 
    if(x < 5) throw "too low"; 
    if(x > 10) throw "too high"; 
} 
catch(err) { 
    message.innerHTML = "Input is " + err; 
} 
} 

на участке:

var message, x; 
message = document.getElementById("message"); 
message.innerHTML = ""; 
x = document.getElementById("demo").value; 

объявить ли первая строка обе переменные сообщение и х? Вторая строка имеет смысл, но на третьей строке она объявляется неопределенной? И что именно делает четвертая строка?

+1

@AndrewLi только это не инициализирует 'message' пустой строке. Во второй строке для переменной 'message' присваивается элемент HTML с идентификатором« message ». На 3-й строке * значение HTML * ранее упомянутого элемента устанавливается в пустую строку. –

+2

_ «В любом случае, он все еще стоит -« сообщение »переназначается в пустую строку« _ - нет, это не так. Свойство 'innerHTML' элемента HTML, для которого' message'references установлено в пустую строку, тем самым освобождая элемент всего содержимого. – CBroe

+1

@CBroe Ugh. Я слепой. Да, свойство innerHTML присваивается пустой строке. – Li357

ответ

0

Первая строка объявляет как сообщение, так и переменные x. Я не знаю, что вы имеете в виду, объявляя undefined, но третья строка устанавливает содержимое (внутренний HTML) элемента сообщения как пустую строку. Последняя строка устанавливает для x атрибут value демонстрационного элемента. Свойство value содержит значение по умолчанию или значение, которое пользователь вводит в текстовое поле (или значение, заданное скриптом).

1

Линия 1: Вы можете объявить (и необязательно назначить значения) нескольким переменным, разделенным запятыми, после одного оператора var.

Строка 3: устанавливает свойство «innerHTML» объекта «сообщение» на пустую строку.

Примечание: объект «сообщение», возвращенный в строке 2, уже будет иметь свойство «innerHTML» типа string (если существует элемент с id = «message»), поскольку это особый тип объекта (HTMLElement), но в целом вы можете присвоить любое значение ранее не определенному свойству объекта, и оно создаст это свойство. Например:

var obj = {} 
alert (typeof obj.newproperty) // undefined 
obj.newproperty = "hello" 
alert (typeof obj.newproperty) // string 

Линия 4:

document.getElementById("demo") 

является ссылкой на элемент с идентификатором = "DEMO"

x = document.getElementById("demo").value 

устанавливает переменную, х, к значению свойство 'value' этого элемента (если оно существует или не определено, если оно не указано.)

Примечание: это не элемент с id = "demo" e xists, то эта строка будет вызывать ошибку, ссылаясь на свойство (значение) на нулевом объекте.

-1
function myFunction() { 
    var message, x; // declarations separated by a comma - end declarations with ; 
    message = document.getElementById("message"); // assignment of an Element (which is an Object) to var message 
    message.innerHTML = ""; // assignment to the Element's innerHTML property which writes inside the HTML Element itself - won't work on inputs (use .value) 
    x = document.getElementById("demo").value; // assign the demo input value to var x 
    try { // try things and send to catch if throw occurs 
    if(x == "") throw "empty"; // == is a truthy test use === for more accuracy 
    if(isNaN(x)) throw "not a number"; // not numeric-ish - isNaN() works on strings too 
    x = Number(x); // cast var x to a number - could also be done like x = +x; 
    if(x < 5) throw "too low"; 
    if(x > 10) throw "too high"; 
    } 
    catch(err) { // err argument receives throw if there is an error 
    message.innerHTML = "Input is " + err; // assign 
    } 
} 
Смежные вопросы