• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Pomoc z kodem JS

VPS Starter Arubacloud
0 głosów
154 wizyt
pytanie zadane 6 czerwca 2020 w JavaScript przez Marak123 Stary wyjadacz (11,190 p.)
zamknięte 6 czerwca 2020 przez Marak123

Mam problem z kodem bo chcem zrobić tak aby ze zmiennej został wyciągana liczba np. 5 i połączana do innej liczby tylko ja chcę wyciągnąć tą liczbę to wyskakuje mi błąd "value.slice is not a function"  używam slice ale uzywałem również substring jak i również  substr i nic nie działa wie ktoś dlaczgo?

 

Kod:

function nacisk(value){
	var siema;
	siema=value.slice(0);
	alert(sema);
	wpisz_dzialanie();
}

value to liczba która będzie po naciśnięciu diva

komentarz zamknięcia: Dzięki wszystkim za pomoc
komentarz 6 czerwca 2020 przez ScriptyChris Mędrzec (190,190 p.)

Pokaż kod, który wywołuje funkcję nacisk.

P.S. W 4 linijce masz literówkę zmiennej sema.

komentarz 6 czerwca 2020 przez Marak123 Stary wyjadacz (11,190 p.)
wiem ze jest literówka ale to nie ważne a kod to zwykły div z onclick="nacisk(1)"

2 odpowiedzi

0 głosów
odpowiedź 6 czerwca 2020 przez spamator12 Nałogowiec (28,230 p.)
wybrane 6 czerwca 2020 przez Marak123
 
Najlepsza
function nacisk(value){

    var siema=value.toString();

    console.log(siema);

    wpisz_dzialanie();

}
komentarz 6 czerwca 2020 przez ScriptyChris Mędrzec (190,190 p.)

Odpowiedź ani nie tłumaczy przyczyny problemu (ot, po prostu wstawiony kod bez opisu) ani nie pokazuje pełnego rozwiązania - brakuje tu użycia metody slice, którą autor pytania chciał użyć. Ta odpowiedź nie powinna więc zostać wybrana jako "najlepsza".

komentarz 6 czerwca 2020 przez spamator12 Nałogowiec (28,230 p.)
edycja 6 czerwca 2020 przez spamator12
nie musi byc. Mi to zwisa, chcialem tylko pomoc. slice nie uzywasz bo nie ma potrzeby. A jezeli chesz uzyc slice to:

 

function nacisk(value){

    var siema=value.toString();

siema = siema.slice(0);

    console.log(siema);

    wpisz_dzialanie();

}

 

Jak zalezy CI na punktach czy tam na reputacji to napisz do admina/to aby te punkty przyznal Tobie i twoja odpowiedz uznal za najlepsza - ja z gory sie zgadzam.
komentarz 6 czerwca 2020 przez ScriptyChris Mędrzec (190,190 p.)

To nie był zarzut do Ciebie - sam sobie odpowiedzi przecież nie wybrałeś. Nie chodzi o punkty, tylko o przydatność odpowiedzi - Twoja nie wyjaśnia problemu (o czym napisałem w komentarzu), a na forum staramy się pomagać przez wyjaśnianie przyczyn problemu, a nie podawanie gotowych rozwiązań.

Poza tym, druga odpowiedź nie jest moja, więc argument o punktach jest tym bardziej bezzasadny.

komentarz 6 czerwca 2020 przez spamator12 Nałogowiec (28,230 p.)

Rozumiem, w takimr azie chodzi o to, ze value zwracalo numer a slice dziala co prawda z numerami (wylacznie) ale tylko odnosnie stringow. Numer trzeba bylo zamienic na string (toString()).

 

Jezeli wpisz_dzialanie() opiera sie na numerach to mzona spowrotem zmienic string na numer - np przez Number() a jezeli sa tam jakeis znaczki jeszcze to np parseFloat()/parseInt()

 

dla potomnych:

var n1 = 42;
var n2 = '42';
if (n1 === n2) {
    console.log('1');
} else {
    console.log('0');
}

zwraca zero bo przyrownanie po typie === slusdznie uwaza, ze string (n2) to nie number (n1).

+2 głosów
odpowiedź 6 czerwca 2020 przez Aisekai Nałogowiec (42,190 p.)
Jeżeli value to liczba po naciśnięciu diva, to może value jest... po prostu numberem? Albo zrób sobie z tego sztucznie stringa (np konkatenujac value z ""), albo przerób algorytm na taki dla numbera.

Najprościej sprawdzisz typ dodając w funkcji zwykłego loga: "console.log(typeof value)", ewentualnie debuggerem.
komentarz 6 czerwca 2020 przez Marak123 Stary wyjadacz (11,190 p.)
ja nie chcę sprawdzać czy to jest liczba a jedynie wyciągnąc tą liczbę i przykleić do innej
komentarz 6 czerwca 2020 przez Aisekai Nałogowiec (42,190 p.)
Jeżeli value jest typem number, to nie możesz wywołać na nim slice/substring/substr itd. Sprawdz sobie jakiego typu napewno jest value.
komentarz 6 czerwca 2020 przez ScriptyChris Mędrzec (190,190 p.)

@Marak123: kod to zwykły div z onclick="nacisk(1)"

To, tak jak sugerował @Aisekai, przekazana wartość jest typu liczbowego, a ten nie posiada w prototypie metody slice. Powinieneś więc albo przekazać wartość w parametrze jako string nacisk('1'), albo rzutować tą wartość już w funkcji, np.

value = '' + value

, albo:

value = value.toString();

, albo zawołać metodę slice w kontekście tej zmiennej przez Function.prototype.call:

String.prototype.slice.call(value, 1);

ja nie chcę sprawdzać czy to jest liczba

JavaScript to język o dynamicznym typowaniu, gdzie często bez sprawdzenia typu nie można wykonać pewnych operacji na zmiennych/wartościach, ponieważ - w uproszczeniu - konstruktor każdego typu ma inne metody prototypowe, z których korzysta się pisząc kod. Jeśli dana wartość jest np. typu number, a próbujesz na niej wywołać funkcję, która jest dostępna w prototypie konstruktora typu string, to ta operacja nie uda się bez zmiany typu wartości lub wywołania konkretnej metody prototypowej w kontekście tej wartości.

komentarz 6 czerwca 2020 przez Tomek Sochacki Ekspert (227,510 p.)

JavaScript to język o dynamicznym typowaniu, gdzie często bez sprawdzenia typu nie można wykonać pewnych operacji na zmiennych/wartościach

dlatego tak pokochałem TS :)

komentarz 6 czerwca 2020 przez ScriptyChris Mędrzec (190,190 p.)
Może kiedyś JS będzie bardziej TSowy. :) Do szybkiego prototypowania/mniejszych aplikacji pisało by się bez statycznych typów, a do większych aplikacji - albo wg uznania - używało by się ficzerów TSa. W TS statyczne typowanie jest z resztą opcjonalne.

Podobne pytania

+1 głos
1 odpowiedź 437 wizyt
pytanie zadane 24 maja 2020 w Python przez Mikisali Początkujący (320 p.)
0 głosów
1 odpowiedź 178 wizyt
pytanie zadane 23 maja 2020 w Python przez Mikisali Początkujący (320 p.)
0 głosów
0 odpowiedzi 445 wizyt
pytanie zadane 17 stycznia 2019 w Visual Basic przez Szymonwest Nowicjusz (120 p.)

92,454 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...