Autor Beitrag
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Mi 26.12.12 02:24 
Moin,

Der Button "Eingabefeld verkleinern" vom Inline-Edit hat keine Funktion. Außerdem weiß ich nicht, ob es gewollt ist, dass der Button "Eingabefeld vergrößern" das Eingabefeld auf ca. 3-5km höhe ausdehnen soll. Scroll-Job!

LG

Für diesen Beitrag haben gedankt: Martok
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mi 26.12.12 04:35 
Get a:
Scroll-Job!


Ahem.

user profile iconFinnO hat folgendes geschrieben Zum zitierten Posting springen:
Außerdem weiß ich nicht, ob es gewollt ist, dass der Button "Eingabefeld vergrößern" das Eingabefeld auf ca. 3-5km höhe ausdehnen soll.
Genau genommen sind es 205km... äh Zeilen. Und warum das so ist, ist so ein schöner Anfängerfehler dass ich das hier echt mal ausbreiten muss. Immerhin bin ich der, der immer anderen vorwirft, dass sie dynamische Typisierung nicht verstanden haben wenn sie genau das an PHP kritisieren, da muss ich dann wohl mal diesen "Martok" zusammenfalten, der das hier verbrochen hat ;)

Sehen wir uns das mal an.
ausblenden JavaScript-Quelltext
1:
2:
3:
4:
5:
6:
7:
PostEdit.ChangeInlineEditHeight = function (post_id, value)
{
  var rows = $("#message"+post_id).attr("rows");
  if (rows + value >= 5) {
    $("#message"+post_id).attr("rows", rows + value);
  }
}

Na, wer siehts schon?
Die beide Parameter sind Zahlen; jQuery-Funktion attr() gibt den Wert eines Attributs als String zurück. Beim "Verlängern" ist value=5, beim "Verkürzen" ist value=-5

Der +-Operator entscheidet anhand des ersten (linken) Typs, ob er Addition oder Verkettung macht. Und was ist das hier? Richtig, String. Also Verkettung.
Kommen wir also vom Standard von 20 Zeilen, steht da:
ausblenden JavaScript-Quelltext
1:
  if ("20" + 5 >= 5) {					

Und "20" + (5).toString() ist der String "205".

Spannender ist das beim Einkürzen danach:
ausblenden JavaScript-Quelltext
1:
  if ("205" + (-5) >= 5) {					

Und "20" + (-5).toString() ist der String "205-5". >= mit Strings wiederum ist der lexikalische Vergleich. Und da ist "205-5" < "5", da "2" < "5". Und deswegen funktioniert das nicht.

Klarer Anwendungsfall für den Failsafe-Cast "Multiplikation", der nämlich im Gegensatz zu parseInt() bei nicht-Strings nicht NaN erzeugt.
ausblenden JavaScript-Quelltext
1:
  var rows = 1 * $("#message"+post_id).attr("rows");					


Und so steht das da jetzt im Testforum auch ;)

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."

Für diesen Beitrag haben gedankt: Christian S., FinnO, Yogu
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 26.12.12 14:30 
Stammt der Quelltext nicht sogar noch von mir? Aber warum hat der mal funktioniert, der ist mindestens seit 2011 unverändert :gruebel:

Aber mal 'ne andere Frage: Gibt es noch irgendeinen Browser, in dem man die Textfelder nicht von Hause aus in der Größe verändern kann? Sprich: Braucht man die Buttons eigentlich noch?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 26.12.12 15:48 
Die Buttons sind auf Tablets z.B. durchaus hilfreich, da man die Ecken da zur Vergrößerung nicht so leicht erwischt. Wie viele sie benutzt haben, sieht man aber daran, dass den Fehler niemand bemerkt hat. :D