Как изменить текст в ```<p>``` на число в js

Я пытаюсь взять содержимое тега <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;

Попробуйте использовать document.getElementById вместо document.p

evolutionxbox 23.12.2020 19:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
358
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Это должно работать:

var text = document.getElementById("price").textContent;

var number = parseInt(text);
number=number*2000;
document.getElementById("price").innerHTML = number.toString();

я попробую сейчас

Firas Rihan 23.12.2020 20:11

Хорошо. Вы упускаете что-то, чего нет в вопросе.

Asgar 23.12.2020 20:17
Ответ принят как подходящий

Вам нужно проанализировать строку до целого числа перед умножением на другое число:

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");

SOS9GS 23.12.2020 20:27

@FirasRihan Надеюсь, ваша проблема решена!

SOS9GS 23.12.2020 20:43

Я попытался поместить предупреждение перед кодом, чтобы убедиться, что он его выполняет, и он предупредил, но код не сработал.

Firas Rihan 23.12.2020 20:53

Есть ли способ отправить вам файлы html и js, чтобы увидеть проблему?

Firas Rihan 23.12.2020 20:54

@FirasRihan Я обновил полный код. Это определенно сработает.

SOS9GS 23.12.2020 20:56

извиняюсь но тоже не получилось, боюсь что не так пишу

Firas Rihan 23.12.2020 21:00

да, если это не работает, то вы делаете неправильно. Вам нужно опубликовать полный код вашей страницы в вашем ques.

SOS9GS 23.12.2020 21:02

я обновлю его, просто дайте мне секунду, спасибо за вашу помощь!

Firas Rihan 23.12.2020 21:05

@FirasRihan Код в порядке. НП с этим кодом и должен работать. Откройте консоль браузера и проверьте, нет ли других ошибок или предупреждений.

SOS9GS 23.12.2020 21:25

Firas Rihan Project.js: 3 Uncaught TypeError: невозможно прочитать свойство textContent со значением null

Firas Rihan 23.12.2020 21:31

я заменил его на parseInt, ошибка была заменена этой: Uncaught TypeError: Cannot set property 'innerHTML' of nul

Firas Rihan 23.12.2020 21:34

@FirasRihan Проверьте, использовали ли вы -> price id дважды или несколько раз. Убедитесь, что он используется только один раз на всей странице.

SOS9GS 23.12.2020 21:46

Наконец-то заработало!!!! единственная проблема заключалась в том, что скрипт должен быть в конце html, чтобы сначала выполнить html. Большое спасибо за вашу помощь и ваше время!!! Счастливых праздников

Firas Rihan 23.12.2020 21:54
var text = document.getElementById("price").innerHTML;

var number = Number(text);

number=number*2000;

document.getElementById("price").innerHTML = number.toString();

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

Tyler2P 23.12.2020 20:08

Я уже объяснил выше, что делает код, я собираюсь сделать тег select для выбора валюты, поэтому, если был выбран фунт, цена будет умножена на 2000.

Firas Rihan 23.12.2020 20:16

price = document.getElementById("price");
price.innerHTML=eval(price.innerHTML)*2000
<div><p id = "price">160</p>

Никогда не используйте eval

Sean 23.12.2020 20:06

Eval вычисляет строковое уравнение. Цена всегда десятичная.

AlASAD WAIL 23.12.2020 20:14

Не используйте parseInt - ваши десятичные дроби (при условии, что это число может иметь десятичные дроби) будут потеряны. Вместо этого используйте parseFloat

var num= parseFloat(document.getElementsByTagName("p")[0].innerHTML);
document.getElementsByTagName("p")[0].innerHTML= num*2000;
<p>160.15</p>

Другие вопросы по теме