Если вам действительно нужно десериализовать число как целое число, вы можете реализовать пользовательский JsonConverter
как:
public class CustomConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return typeof(object).Equals(objectType);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JToken jToken = JValue.ReadFrom(reader);
switch (reader.TokenType)
{
case JsonToken.Integer:
return jToken.Value<int>();
case JsonToken.String:
return jToken.Value<string>();
// ...and so on...
default:
throw new ArgumentException($"Unknown JsonToken: '{reader.TokenType}'.");
}
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
serializer.Serialize(writer, value.ToString());
}
}
Передать экземпляр пользовательского класса преобразователя в метод DeserializeObject()
как:
JsonConvert.DeserializeObject<SettingsModel>(reader.ReadToEnd(), new CustomConverter());
Если он не является частью документа, вы не можете получить его с помощью document.getElementById
. getElementById
выполняет поиск в DOM, поэтому элемент должен быть в дереве, чтобы его можно было найти. Если вы создаете плавающий элемент DOM, он просто существует в памяти и недоступен из DOM. Он должен быть добавлен в DOM, чтобы быть видимым.
Если вам понадобится ссылаться на элемент позже, просто передайте ссылку другой функции - все объекты в JavaScript передаются по ссылке, поэтому работайте с этим плавающим элементом DOM из внутри другой функции изменяет оригинал, а не копию.
Для любого натыкающегося на эту проблему в или после 2019, вот обновленный ответ.
принятый ответ от Andrew Noyes корректен в этом document.getElementById
, не будет работать, если элемент не существует в документе, и вышеупомянутый код уже содержит ссылку на желаемый элемент так или иначе.
Однако, если Вы не можете иначе получить прямую ссылку к своему желаемому элементу, рассмотрите использование селекторы . Селекторы позволяют Вам получать узлы, которые существуют просто в памяти, например:
var child = document.createElement("div");
child.id = "my_id";
var parent = document.createElement("div");
parent.appendChild(child);
var child2 = parent.querySelector("#my_id");
getElementById - это метод объекта документа. Он не вернет ничего, чего нет в документе.
Не сохранять ссылку, а? Если бы вы могли магическим образом вытащить его из воздуха с помощью id, то воздух был бы ссылкой на него.
Если вы создали его, просто передать объект другим функциям и получить к нему прямой доступ?
function createDiv()
{
var newElement = document.createElement('div');
doWorkWithDiv(newElement);
}
function doWorkWithDiv(element)
{
element.className = 'newElementCSS';
element.innerHTML = 'Text inside newElement';
addToDoc(element);
}
function addToDoc(element)
{
document.body.appendChild(element);
}