Вы используете массив как объект, разница между getElementbyId
и getElementsByClassName
такова:
getElementbyId
вернет вам объект. getElementsByClassName
вернет вам массив. Метод
getElementsByClassName(classNames)
принимает строку, содержащую неупорядоченный набор уникальных разделенных пробелами маркеры, представляющие классы. При вызове метод должен возвращать живой объектNodeList
, содержащий все элементы документа, которые имеют все классы, указанные в этом аргументе, получив классы, разделив строку на пробелы. Если в аргументе нет токенов, тогда метод должен возвращать пустой NodeList.https://www.w3.org/TR/2008/WD-html5 -20080610 / dom.html # getelementsbyclassname
getElementById
Метод getElementById () обращается к первому элементу с указанным id.
http://www.w3schools.com/jsref/met_doc_getelementbyid.asp
в вашем коде строки:
1- document.getElementsByClassName ('myElement'). Style.size = '100px';
НЕ будет работать, как ожидалось, потому что
getElementByClassName
вернет массив, и массив будет НЕ имеет свойствоstyle
, вы будете обращаться к каждомуelement
, итерации их.Вот почему функция
getElementById
работает на вас, эта функция вернет вам прямой объект, и поэтому вы сможет получить доступ к свойствуstyle
.
Я знаю, что этот вопрос немного устарел, однако я столкнулся с подобным случаем в одном из моих проектов и принял этот вопрос и решил поделиться своим решением, которое отлично сработало для меня, и надеюсь, что он будет служить другим тем же.
private string ConvertToWesternArbicNumerals(string input)
{
var result = new StringBuilder(input.Length);
foreach (char c in input.ToCharArray())
{
//Check if the characters is recognized as UNICODE numeric value if yes
if (char.IsNumber(c))
{
// using char.GetNumericValue() convert numeric Unicode to a double-precision
// floating point number (returns the numeric value of the passed char)
// apend to final string holder
result.Append(char.GetNumericValue(c));
}
else
{
// apend non numeric chars to recreate the orignal string with the converted numbers
result.Append(c);
}
}
return result.ToString();
}
теперь вы можете просто вызвать функцию, чтобы вернуть западные арабские цифры.
, чтобы получить значение цифры, вычтите из него нулевой символ, например, в нормальном цифровом, '1'-'0' = 1
, '2'-'0' = 2
. и т. д.
Для многозначного числа вы можете использовать что-то вроде этого
result =0;
foreach(char digit in number)
{
result *= 10; //shift the digit, multiply by ten for each shift
result += (digit - '0)'; //add the int value of the current digit.
}
, просто замените «0» на арабский нуль, если ваш номер использует арабский символ. Это работает для любых числовых символов, если 0-9 в этой системе символов закодированы последовательно.
использовать этот метод
private string toEnglishNumber(string input)
{
string EnglishNumbers = "";
for (int i = 0; i < input.Length; i++)
{
if (Char.IsDigit(input[i]))
{
EnglishNumbers += char.GetNumericValue(input, i);
}
else
{
EnglishNumbers += input[i].ToString();
}
}
return EnglishNumbers;
}
string
, даже если это не «все цифры». как даты и т. д.
– ehsan88
8 September 2015 в 08:23
Простой способ преобразования арабских чисел в integer
string EnglishNumbers="";
for (int i = 0; i < arabicnumbers.Length; i++)
{
EnglishNumbers += char.GetNumericValue(arabicnumbers, i);
}
int convertednumber=Convert.ToInt32(EnglishNumbers);
К сожалению, пока невозможно разобрать полное строковое представление, передав соответствующий IFormatProvider
(возможно, в будущих версиях). Однако тип char
имеет метод GetNumericValue
, который преобразует любой числовой символ Unicode в double. Например:
double two = char.GetNumericValue('٢');
Console.WriteLine(two); // prints 2
Вы можете использовать его для преобразования одной цифры за раз.
Арабские цифры, такие как 1,2,3,4 в юникоде, кодируются как символы в диапазоне от 1632 до 1641. Вычтите unicode для арабского нуля (1632) из значения unicode каждой арабской цифры чтобы получить свои цифровые значения. Умножьте каждое цифровое значение на его значение места и суммируйте результаты, чтобы получить целое число.
Альтернативно используйте Regex.Replace
для преобразования строки с арабскими цифрами в строку с десятичными цифрами, затем используйте Int.Parse
для преобразования результат в целое число.
if (char.IsDigit(c)) { bytes[1] = Convert.ToByte( char.GetNumericValue(c)); utf8Decoder.GetChars(bytes, 0, 2, convertedChar, 0); convertedChars.Append(convertedChar[0]); }
в код здесь: utf8Decoder.GetChars (байты, 0, 2, convertChar, 0); говорит, что буфер слишком мал или большой.
– Shaahin
4 May 2011 в 08:10