Я пытаюсь взять содержимое тега <p>, затем изменить его на число и умножить на 2000, а затем вернуть его в <p> (это работает после того, как я нажимаю тег выбора, который меняет валюту с долларов США на LBP путем умножения числа с 2000 г.)
пс: это проект для моего класса
:
HTML:
<div class = "card">
<img class = "imgcar" src = "cars/402088-2020-land-rover-range-rover-velar.jpg" alt = "Avatar" style = "width:16em">
<div class = "container">
<h4><b>Range Rover Velar</b><br><b>4 Doors</b><br><b> 5 Passengers</b> </h4>
<p id = "price">100</p><p>$/24hrs</p>
</div>
</div>
JavaScript:
var p = document.getElementById("price");
var text = p.textContent;
var number = parseInt(text) * 2000;
p.innerHTML = number;



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это должно работать:
var text = document.getElementById("price").textContent;
var number = parseInt(text);
number=number*2000;
document.getElementById("price").innerHTML = number.toString();
я попробую сейчас
Хорошо. Вы упускаете что-то, чего нет в вопросе.
Вам нужно проанализировать строку до целого числа перед умножением на другое число:
HTML
<div><p id = "price">160</p>
JS
var p = document.getElementById("price");
var text = p.textContent;
var number = parseInt(text) * 2000;
p.innerHTML = number;
попробуйте сейчас - вместо - document.p.innerHTML вам нужно использовать p.innerHTML в последней строке. Также в первой строке вы пропустили кавычку в селекторе идентификатора - var p = document.getElementById(price); -> var p = document.getElementById("price");
@FirasRihan Надеюсь, ваша проблема решена!
Я попытался поместить предупреждение перед кодом, чтобы убедиться, что он его выполняет, и он предупредил, но код не сработал.
Есть ли способ отправить вам файлы html и js, чтобы увидеть проблему?
@FirasRihan Я обновил полный код. Это определенно сработает.
извиняюсь но тоже не получилось, боюсь что не так пишу
да, если это не работает, то вы делаете неправильно. Вам нужно опубликовать полный код вашей страницы в вашем ques.
я обновлю его, просто дайте мне секунду, спасибо за вашу помощь!
@FirasRihan Код в порядке. НП с этим кодом и должен работать. Откройте консоль браузера и проверьте, нет ли других ошибок или предупреждений.
Firas Rihan Project.js: 3 Uncaught TypeError: невозможно прочитать свойство textContent со значением null
я заменил его на parseInt, ошибка была заменена этой: Uncaught TypeError: Cannot set property 'innerHTML' of nul
@FirasRihan Проверьте, использовали ли вы -> price id дважды или несколько раз. Убедитесь, что он используется только один раз на всей странице.
Наконец-то заработало!!!! единственная проблема заключалась в том, что скрипт должен быть в конце html, чтобы сначала выполнить html. Большое спасибо за вашу помощь и ваше время!!! Счастливых праздников
var text = document.getElementById("price").innerHTML;
var number = Number(text);
number=number*2000;
document.getElementById("price").innerHTML = number.toString();
Пожалуйста, не публикуйте только код в качестве ответа, но также объясните, что делает ваш код и как он решает проблему вопроса. Ответы с объяснением, как правило, более полезны и качественны, и с большей вероятностью привлекут положительные голоса.
Я уже объяснил выше, что делает код, я собираюсь сделать тег select для выбора валюты, поэтому, если был выбран фунт, цена будет умножена на 2000.
price = document.getElementById("price");
price.innerHTML=eval(price.innerHTML)*2000<div><p id = "price">160</p>Никогда не используйте eval
Eval вычисляет строковое уравнение. Цена всегда десятичная.
Не используйте parseInt - ваши десятичные дроби (при условии, что это число может иметь десятичные дроби) будут потеряны. Вместо этого используйте parseFloat
var num= parseFloat(document.getElementsByTagName("p")[0].innerHTML);
document.getElementsByTagName("p")[0].innerHTML= num*2000;<p>160.15</p>
Попробуйте использовать
document.getElementByIdвместоdocument.p