То, как я избавляюсь от __ o, не объявляется?

Тебе действительно не нужен цикл for.

    let number = 0;
    function increase() {
     if (number <= 50) {
      document.getElementById("number").innerHTML = number += 1;
       }
}
function double() {
     if (number > 50) {
    document.getElementById("number").innerHTML = number += 2;
    }
    }
.button1border {
border: black 3px solid;
margin: 10px 1280px 0px 0px;
width: 60px;
}
<!DOCTYPE="html">
<html>
 <link rel="stylesheet" type="text/css" href="/style.css">
<button type="button" onclick="increase()">
  by 1
</button>
  <button onclick="double()">
    by 2
  </button>
  <div class="button1border">
    number:
    <div id="number">
      
  </div>
  </div>
<script src="script.js" type="text/javascript"></script>
</html>

52
задан Johnno Nolan 14 April 2009 в 22:19
поделиться

2 ответа

Я нашел ответ на форумах .net. Он содержит хорошее объяснение того, почему ASP.Net ведет себя так, как он есть:

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

  <% if (true) {%>
 <% = 1%>
 <%}%>
 <% = 2%> 

Чтобы предоставить intellisense в блоках <% =%> во время разработки, ASP.NET генерирует присваивание временной переменной __o, а язык (VB или C #) затем предоставляет intellisense для переменной. Это делается, когда компилятор страницы видит первый блок <% = ...%>. Но здесь блок находится внутри if, поэтому после закрытия if переменная выходит из области видимости. В итоге мы генерируем что-то вроде этого:

  if (true) {
 объект @__o;
 @__o = 1;
 }
 @__o = 2;

Обходной путь - добавить фиктивное выражение в начале страницы. Например, <% = ""%>. Это ничего не будет отображать, и это будет гарантировать, что __o объявлен как верхний уровень в методе Render, перед любым потенциальным оператором if (или другой области видимости).

Альтернативное решение - просто использовать

<% response.write(var) %>

вместо

<%= var %>
69
ответ дан 7 November 2019 в 09:24
поделиться

Да, я иногда сталкивался с одной и той же ошибкой на страницах, которые используют серверные конструкции на страницах ASPX.

Сверхурочные Я нашел исправление для этого (извините, я просто не смог выяснить, где я снова нашел этот бит информации.) И это исправление - поместить следующий код над ошибочным <% ...%> block:

<%-- For other devs: Do not remove below line. --%>
<%="" %>
<%-- For other devs: Do not remove above line. --%>

Очевидно, что если вы поместите приведенный выше код, все будет иметь значение для VS.NET, поэтому может потребоваться несколько попыток, чтобы сделать это правильно.

15
ответ дан Cerebrus 7 November 2019 в 09:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: