2016-11-03 3 views
1

Вот моя простая функция, которая вызывается на элементе, как onclick="incrementValue(this)"Количество парсинг работает в консоли, но не в сценарии

function incrementValue(plusElement) { 
    var choicesLeft = jQuery("#choicesLeft"); 

    choicesLeft.innerHTML = Number(choicesLeft.innerHTML) - 1; 
    console.log(choicesLeft.innerHTML); 
}; 

console.log линия печатает NaN в консоли.

Однако, когда я вхожу эта строку в консоли:

choicesLeft.innerHTML = Number(choicesLeft.innerHTML) - 1;

Ожидаемое поведение происходит.

Любые идеи?

+0

Что такое 'mealLeft' ?? –

+0

choiceLeft - это объект jQuery, и он не имеет innerHTML. Я очень сомневаюсь, что это будет работать на консоли. – epascarello

+2

использовать '.text()' вместо '.innerHTML' –

ответ

1

innerHTML не будет работать здесь, так как вы вызываете его на объект jQuery.

Использования text() вместо innerHTML:

choicesLeft.text(Number(choicesLeft.text()) - 1); 

Надеется, что это помогает.

function incrementValue() { 
 
    var choicesLeft = jQuery("#choicesLeft"); 
 

 
    choicesLeft.text(Number(choicesLeft.text()) + 1); 
 
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button onClick='incrementValue()'>Increment</button> 
 
<br> 
 
<span id='choicesLeft'>0</span>

+1

текст() предположение было достаточно. Принять вы можете остановить редактирование LOL. PS вы ввели опечатку в «Hoep». – softcode

0

Ваш код содержит несколько вопросов:

function incrementValue(plusElement) { 
    var choicesLeft = jQuery("#choicesLeft"); 

    choicesLeft.innerHTML = Number(choicesLeft.innerHTML) - 1; 
    console.log(mealsLeft.innerHTML); 
}; 

Сначала вы используете параметр plusElement, который фирн используется.

Во-вторых, вы смешиваете javascript с jquery.

choiceLeft, является объектом jquery, и вы должны использовать jquery api для взаимодействия.

Таким образом, вы должны иметь что-то:

var choicesLeftNum = Number(choichesLeft.text()); 

или

var choicesLeftNum = +choichesLeft.text(); 

или вар choicesLeftNum = ParseInt (choichesLeft.text(), 10);

Чем вы декрементировать:

choichesLeft.text(choicesLeftNum - 1); 

Вы должны использовать текст() вместо HTML() как вы не хотите содержание HTML, если таковые имеются. Ты в порядке со всем текстом.

Смежные вопросы