2016-12-03 13 views
-1

Я ищу причины, почему прибавка оператор не увеличивает числовое значение в том месте, где я поставил значение innerHTML, как показано ниже:оператор пост-инкремент не не увеличивает переменную только после оценки

<div id="php"></div> 

var a = 14; 
document.getElementById("php").innerHTML = a++;//the result will be 14 instead of 15 
+0

Хотя лично я использую оператор инкремента, который в порядке, потому что я знаю, что я делаю, и я думаю, что это хорошо, предложения в вопросе о которых это помечается как стоит рассмотреть, как способ избежать путаницы, с которой вы столкнулись, в том числе поместить оператор приращения сам по себе на отдельной строке или вместо «a + = 1». Хотя некоторые пуристы, которые отказываются читать какую-либо документацию, могут возражать, это [документация] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Increment_()) совершенно ясна. –

+0

(продолжение) В нем говорится: * оператор приращения увеличивает (добавляет один из) его операнд и возвращает значение. Если используется postfix, с оператором после операнда (например, 'x ++'), то он возвращает значение ** до ** incrementing. * –

+1

@torazaburo: так почему в alert (a ++) работал нормально, а in innerHTML возвратил значение затем увеличил его! , – mina

ответ

0

Это действительно увеличивает переменную, однако он записывает в innerHTML увеличивает значение, Вы можете использовать ++a который увеличит значение, прежде чем он пишет в innerHTML.

var a = 14 
 
var b = 14 
 
console.log('before a', a) 
 
document.getElementById("test1").innerHTML = a++ 
 
console.log('after a', a) 
 

 
console.log('before b', b) 
 
document.getElementById("test2").innerHTML = ++b 
 
console.log('after b', b)
<div id="test1"></div> 
 
<div id="test2"></div>

+0

, но если я использую alert (a ++), он будет работать нормально, и у предупреждения будет новое добавочное значение – mina

+0

ваше предупреждение ведет себя иначе, чем мое предупреждение. перезагружать? – oMiKeY

0

Вместо использования a++ вы можете сделать ++a получить приращение до передачи имущества значения переменной:

var a = 14; 
 
document.getElementById("php").innerHTML = ++a;
<div id="php"></div>

+0

, но если я использовал предупреждение (a ++), он будет работать нормально, а в оповещении будет добавлено новое добавочное значение – mina

0

Поскольку вы используете постфикс increment operatorvariable++, это означает, что вы сначала получаете значение, а затем переменную увеличиваете.

Когда вы используете префиксный оператор инкремента ++variable, переменная получает инкремент сначала, а затем возвращается значение.

var a = 42; 
 
console.log(a++); // shows 42, value is 43 
 
console.log(a); // 43 
 
console.log(++a); // 44 
 
console.log(a); // 44

+1

но если я использую alert (a ++), он будет работать нормально, и предупреждение будет иметь новое добавочное значение – mina

+0

@mina, я не могу это доказать. –

+0

@mina Это не будет. – Lewis

 Смежные вопросы

  • Нет связанных вопросов^_^