jQuery не учитывает два данных вверх [дубликат]

Строка ошибки «Ссылка на объект, не установленная на экземпляр объекта.» указывает, что вы не назначили экземпляр объекта объектной ссылке, и все же вы получаете доступ к свойствам / методам этого объекта.

например: скажем, у вас есть класс под названием myClass и он содержит одно свойство prop1.

public Class myClass
{
   public int prop1 {get;set;}
}

Теперь вы получаете доступ к этому prop1 в каком-то другом классе, как показано ниже:

public class Demo
{
     public void testMethod()
     {
        myClass ref = null;
        ref.prop1 = 1;  //This line throws error
     }
}

выше строки выдает ошибку, потому что ссылка класса myClass объявлена, но не создана, или экземпляр объекта не назначается referecne этого класса.

Чтобы исправить это, вам нужно создать экземпляр (присвоить объект ссылке на этот класс).

public class Demo
{
     public void testMethod()
     {
        myClass ref = null;
        ref = new myClass();
        ref.prop1 = 1;  
     }
}
137
задан Felix Kling 8 March 2012 в 20:06
поделиться

16 ответов

Я бы использовал оператор унарного плюса, чтобы сначала преобразовать их в числа.

+num1 + +num2;
282
ответ дан ChaosPandion 27 August 2018 в 23:32
поделиться

Я всегда просто вычитал нуль.

num1-0 + num2-0;

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

1
ответ дан adam0101 27 August 2018 в 23:32
поделиться

Вы можете использовать parseInt для разбора строки на число. Чтобы быть в безопасности, всегда передавайте 10 в качестве второго аргумента для анализа в базе 10.

num1 = parseInt(num1, 10);
num2 = parseInt(num2, 10);
alert(num1 + num2);
0
ответ дан Alex Turpin 27 August 2018 в 23:32
поделиться

Используйте метод parseFloat для синтаксического анализа строк в числах с плавающей запятой:

parseFloat(num1) + parseFloat(num2)
0
ответ дан Guffa 27 August 2018 в 23:32
поделиться

Попробуйте это, если вы ищете простой код Javascript и хотите использовать два поля ввода и добавить числа из двух значений. Вот код.

    Enter the first number: <input type="text" id="num1" /><br />
    Enter the seccond number: <input type="text" id="num2" /><br />
    <input type="button" onclick="call()" value="Add"/>

    <script type="text/javascript">
    function call(){
    var q=parseInt(document.getElementById("num1").value);
    var w=parseInt(document.getElementById("num2").value);
    var result=q+w;
    }
    </script>

для получения дополнительной информации посетите http://informativejavascript.blogspot.nl/2012/12/javascript-basics.html

-2
ответ дан kamal 27 August 2018 в 23:32
поделиться

попробуйте

var x = parseFloat(num1) + parseFloat(num2) ;

или, в зависимости от ваших потребностей:

var x = parseInt(num1) + parseInt(num2) ;

http://www.javascripter.net/faq/convert2.htm

Возможно, вы захотите забрать книгу Javascript: The Good Parts , автор Douglas Crockford. Javascript имеет довольно значительную коллекцию gotchas! Эта книга проделала долгий путь к их разъяснению. См. Также

и превосходный очерк г-на Крокфорда, Javascript: самый неверный язык программирования в мире .

9
ответ дан kapex 27 August 2018 в 23:32
поделиться

преобразует строки в floats с parseFloat(string) или integers с parseInt(string)

6
ответ дан Kristian 27 August 2018 в 23:32
поделиться

Если вам нужно добавить две строки вместе, которые являются очень большими числами, вам нужно будет оценить добавление в каждой строковой позиции:

function addStrings(str1, str2){
  str1a = str1.split('').reverse();
  str2a = str2.split('').reverse();
  let output = '';
  let longer = Math.max(str1.length, str2.length);
  let carry = false;
  for (let i = 0; i < longer; i++) {
    let result
    if (str1a[i] && str2a[i]) {
      result = parseInt(str1a[i]) + parseInt(str2a[i]);

    } else if (str1a[i] && !str2a[i]) {
      result = parseInt(str1a[i]);

    } else if (!str1a[i] && str2a[i]) {
      result = parseInt(str2a[i]);
    }

    if (carry) {
        result += 1;
        carry = false;
    }
    if(result >= 10) {
      carry = true;
      output += result.toString()[1];
    }else {
      output += result.toString();
    }
  }
  output = output.split('').reverse().join('');

  if(carry) {
    output = '1' + output;
  }
  return output;
}
4
ответ дан kugyousha 27 August 2018 в 23:32
поделиться

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

(+varname)

Итак, в вашем это:

var num1 = '20',
    num2 = '30.5';

var sum = (+num1) + (+num2);

// Just to test it
console.log( sum ); // 50.5
10
ответ дан Luca Borrione 27 August 2018 в 23:32
поделиться

Если вы хотите выполнить операцию с числами как строки (как в случае, если число может превышать 64 бит), вы можете использовать библиотеку с большим числом .

const bigInt = require('big-integer')
bigInt("999").add("1").toString() // output: "1000"
1
ответ дан Marcelo Lazaroni 27 August 2018 в 23:32
поделиться

MDN docs для parseInt MDN docs для parseFloat

В parseInt radix указано как десять, так что мы находимся в базе 10. В нестрочном javascript число, добавленное с 0, рассматривается как восьмеричное. Это, очевидно, вызовет проблемы!

parseInt(num1, 10) + parseInt(num2, 10) //base10
parseFloat(num1) + parseFloat(num2)

Также см. Ответ ChaosPandion на полезный ярлык с помощью унарного оператора . Я установил скрипт, чтобы показать разные типы поведения.

http://jsfiddle.net/EtX6G/

var ten = '10';
var zero_ten = '010';
var one = '1';
var body = document.getElementsByTagName('body')[0];

Append(parseInt(ten) + parseInt(one));
Append(parseInt(zero_ten) + parseInt(one));
Append(+ten + +one);
Append(+zero_ten + +one);

function Append(text) {
    body.appendChild(document.createTextNode(text));
    body.appendChild(document.createElement('br'));
}
17
ответ дан mrtsherman 27 August 2018 в 23:32
поделиться

Убедитесь, что вы округлили свой окончательный ответ до 16 знаков после запятой для поплавков, поскольку java-скрипт неисправен.

Например, 5 - 7.6 = -2.5999999999999996

0
ответ дан Nicolas 27 August 2018 в 23:32
поделиться

Я использую это в своем проекте. Я использую знак + для обработки строки как числа (в переменной in_interesst)

<script>
function computeLoan(){
var amount = document.getElementById('amount').value;
var interest_rate = document.getElementById('interest_rate').value;
var days = document.getElementById('days').value;
var interest = (amount * (interest_rate * .01)) / days;
var payment = ((amount / days) + interest).toFixed(2);
var with_interest = (amount * (interest_rate * .01));
var with_interesst = (+amount * (interest_rate * .01)) + (+amount);
payment = payment.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
document.getElementById('payment').innerHTML = "Target Daily = PHP"+payment;
document.getElementById('with_interesst').innerHTML = "Amount w/Interest =   PHP"+with_interesst;
}
</script>

<div name="printchatbox" id="printchatbox">
 <form id="Calculate" class="form-horizontal">
   <h2>You Can Use This Calculator Before Submit </h2>
   <p>Loan Amount: PHP<input id="amount" type="number" min="1" max="1000000"  onchange="computeLoan()"></p>
   <p>Interest Rate: <input id="interest_rate" type="number" min="0" max="100" value="10" step=".1" onchange="computeLoan()">%</p>
    <p>Term<select id="days" type="number" min="1" max="72" step=".1" onchange="computeLoan()">
    <option value="40">40 Days</option>
    <option value="50">50 Days</option>
    <option value="60">60 Days</option>
    <option value="70">70 Days</option>
    <option value="80">80 Days</option>
    <option value="90">90 Days</option>
    <option value="100">100 Days</option>
    <option value="120">120 Days</option>
    </select>
    </p>                        
   <h2 id="payment"></h2>
   <h2 id ="with_interesst"></h2>
 </form>
</div>

Надеюсь, что это поможет

0
ответ дан rai 27 August 2018 в 23:32
поделиться

Вы можете использовать следующее:

var num1 = '20',
    num2 = '30.5';

alert((num1*1) + (num2*1)); //result 50.5

При применении * 1 в num1, преобразовать строку в число.

, если num1 содержит букву или запятую, возвращает NaN умножение по 1

, если num1 является нулевым, num1 возвращает 0

вид привет !!!

0
ответ дан Seconddj 27 August 2018 в 23:32
поделиться

Вы можете использовать это, чтобы добавить числа:

var x = +num1 + +num2;
4
ответ дан Sirko 27 August 2018 в 23:32
поделиться

function sum () {

var x,y,z;
x = Number(document.getElementById("input1").value);
y = Number(document.getElementById("input2").value);
z = x + y;
document.getElementById("result").innerHTML = z ;

}

1
ответ дан Soham Das 27 August 2018 в 23:32
поделиться
Другие вопросы по тегам:

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