Почему эта переменная не отображает свой номер в своем innerHTML?

Вы можете создать функцию расширения как:

public static List<T> ToListof<T>(this DataTable dt)
{
    const BindingFlags flags = BindingFlags.Public | BindingFlags.Instance;
    var columnNames = dt.Columns.Cast<DataColumn>()
        .Select(c => c.ColumnName)
        .ToList();
    var objectProperties = typeof(T).GetProperties(flags);
    var targetList = dt.AsEnumerable().Select(dataRow =>
    {
        var instanceOfT = Activator.CreateInstance<T>();

        foreach (var properties in objectProperties.Where(properties => columnNames.Contains(properties.Name) && dataRow[properties.Name] != DBNull.Value))
        {
            properties.SetValue(instanceOfT, dataRow[properties.Name], null);
        }
        return instanceOfT;
    }).ToList();

    return targetList;
}


var output = yourDataInstance.ToListof<targetModelType>();
0
задан Vigz 18 January 2019 в 16:57
поделиться

3 ответа

Когда вы используете оператор присваивания для установки innerHTML элемента DOM, это просто однократное обновление. Это не заставляет innerHTML ссылаться на значение, которое может быть обновлено. Поэтому в дополнение к настройке innerHTML на баллы в начале, вам придется делать это каждый раз, когда баллы меняются.

Кроме того, вы, возможно, думали иначе, если бы не имели взаимодействия со многими современными реактивными структурами, которые абстрагируют это и делают это для вас с помощью виртуальной DOM, генерирующей функцию представления

0
ответ дан Fabio Beltramini 18 January 2019 в 16:57
поделиться

Вам необходимо обновлять innerHTML всякий раз, когда вы обновляете переменную. Они не синхронизируются автоматически.

rock.addEventListener("click", function() {
  let computerSelection = computerPlay();
  let game = playRound(computerSelection, 'Rock');
  if (game === 'tie') {
    document.getElementById('result').innerHTML = 'Tie!';
  } else if (game === 'player') {
    document.getElementById('result').innerHTML = 'You win!';
    playerscore++;
    document.getElementById('playerscore').innerHTML = playerscore;
  } else {
    document.getElementById('result').innerHTML = 'You lose!';
    computerscore++;
    document.getElementById('cpuscore').innerHTML = computerscore;
  }
});

0
ответ дан Barmar 18 January 2019 в 16:57
поделиться

Если вы хотите, чтобы на странице отображались новые оценки при каждом их изменении, вам нужно будет обновлять DOM каждый раз, когда вы меняете оценки. Другими словами, поместите ваш код ...innerHTML = {score} в обработчик событий.

Вот короткая демонстрация:

var playerscore = 0;
var computerscore = 0;

// display initial scores
document.getElementById('cpuscore').innerHTML = computerscore;
document.getElementById('playerscore').innerHTML = playerscore;

document.getElementById('run').addEventListener("click", function() {
  // ... game logic here ...
  if (Math.random() > .5)
    computerscore++
  else
    playerscore++;
  
  // display updated scores
  document.getElementById('cpuscore').innerHTML = computerscore;
  document.getElementById('playerscore').innerHTML = playerscore;
});
<div>CPU Score: <span id="cpuscore"></span></div>
<div>Player Score: <span id="playerscore"></span></div>

<button id="run">Run</button>

0
ответ дан p.s.w.g 18 January 2019 в 16:57
поделиться
Другие вопросы по тегам:

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