React passing link to reusable component - javascript

I am using a reusable component in React, to which a pass mostly text and some props. One of the texts needs to have a linked word, but I do not know how to pass that link inside a string.Any idea how to pass a string with links in it? Thanks!
This is how I am passing text and props to my reusable VertragsCheckSlide component. My question refers to prop "parag1", there is where I need to add the link with an info-Icon. I tried passing it it is usually works, but I get an [Object, Object] as output.
<VertragsCheckSlide
title="Ist meine Rentenversicherung zu teuer?"
parag1={`Die Kosten von privaten Rentenversicherungen sind sehr
intransparent und höchst unterschiedlich. Mit der gesetzlich
vorgeschriebenen Effektivkostenquote ${(
<TipIcon
size="lg"
tooltipText={ToolTips[0]}
/>
)} kann man sie aber gut vergleichen.`}
parag2="Bei klassischen Anbietern (zumeist Versicherungen) liegt die
Effektivkostenquote oft bei 2 % oder sogar höher. Bei myPension
beträgt sie nur ca. 0,8 %."
parag3="Hohe Kosten mindern den Ertrag und damit dein zukünftiges
Guthaben zur Verrentung. Wie viel das ausmachen kann, zeigt dir die
nebenstehende Grafik."
buttonText="Weitermachen"
graphicImage={graphicImage4}
dropDown
renderSelect={this.renderSelect}
dropTitle="Wo finde ich die Effektivkostenquote in meinem bestehenden
Vertrag?"
dropText="Jeder Anbieter einer privaten Rentenversicherung ist
verpflichtet, die Effektivkosten anzugeben. Man findet sie im
sogenannten Produktinformationsblatt. Suche einfach nach den
Begriffen „Informationsblatt“, „Effektivkosten“ oder „Kosten“ und
schon hast du deine Kosten im Blick. Probiere auch unseren
Nettovergleichsrechner aus!
Hilfe nötig? Du kannst uns anrufen oder uns gleich deinen Vertrag per
E-Mail senden. Wir melden uns schnellstmöglich bei dir."
handleClick={this.next}
activeSlide={activeSlide}
/>
Thanks for the help!

you can try pass a string like a html object:
<div>
<div> your text in here </div>
<a href={your link} />
</div>
and in component render text can using:
<span>
dangerouslySetInnerHTML={{ __html: content transmisson in }}
</span>
that is this way how to render papper in html

It perfectly worked passing the prop like this:
<VertragsCheckSlide
parag1={<div>
Die Kosten von privaten
Rentenversicherungen sind sehr
intransparent und höchst
unterschiedlich. Mit der gesetzlich
vorgeschriebenen Effektivkostenquote
<TipIcon
size="lg"
tooltipText={ToolTips[0]}
/>
kann man sie aber gut vergleichen.
</div>
} />
No need off setting any dangerouslySetInnerHTML on Render.
Thanks for the tips!

Related

I can't press the close button at the end

got a question about js. Wanted to add a 'finish' button to my textadventure. The js function I have included externally. Now the problem is that i have different html documents, if i open and close a html document by pressing the button it works. But if I go through from the start document to the last html document, the button doesn't work. 😂
Do you have any idea?
Here is my close
function windowClose() {
window.open('', '_parent', '');
window.close();
}
Your close is not supposed to work on any browser anymore. It is a hack. If you managed to close my browser (and therefore kill my history) I would be quite annoyed.
Your pages are so short, you can have all of them in one page and just show/hide each path. You can even ajax them into a popped div and just hide the div when ending
For example like this
The example only loads start and WegAA1.html, look at the new source of the sub pages - for example WegAA1.html
Note I moved the buttons into the text div and added
<meta charset="UTF-8">
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
to start.html
$(function() {
$(document).on("click", ".btn", function(e) {
e.preventDefault(); // stop possible submission
const $div = $("#text");
let pageURL = $(this).data("href"); // the string in the data-href attribute of the button
$div.fadeOut("slow", function() {
$div.load(pageURL+" #text", function() {
$div.fadeIn("slow")
});
});
});
});
...
<!--Teile des Dokuments definieren -->
<div id="text"> Claudette geht mit ihrem Hund Nachts spazieren. Es ist Wochenende und sie hat im Moment nichts besseres zu tun, da sie viel Druck von der Schule hat und sie dadurch derzeit keinen Kopf für andere Sachen hat. Darauf hin schreibt sie William an, er ist
ein guter Freund auf den sie sich immer verlassen kann. Dieser ist zwar kein gutes Vorbild da er raucht, aber das hält ihn nicht davon ab ein guter Mensch zu sein. Glücklicherweise schreibt dieser innerhalb von 5 Minuten auch schon zurück. Er wohnt
nicht weit von Claudette weg und schlägt vor sie beim Spazieren gehen zu begleiten....
<div id="option-buttons" class="btn-grid">
<button class="btn" data-href="WegAA1.html">Versuchen diesen zu Reparieren </button>
<button class="btn" data-href="WegBB1.html">Erst einmal weiter suchen </button>
</div>
</div>
</div>

How to traslate a whole html page with ngx translate

My privacy policy is embedded as full html. I would like to translate it with ngx-translate but it would be much to time expensive and completely unstructured if I would translate it per html tag as ngx-translate suggests it.
This is what the policy is designed like:
<h1>Datenschutzerklärung</h1>
<p>Verantwortlicher im Sinne der Datenschutzgesetze, insbesondere der EU-Datenschutzgrundverordnung (DSGVO), ist:
</p>
<p>Chinaedu Pascal Onwukwe</p>
<h2 id="betroffenenrechte">Ihre Betroffenenrechte</h2>
<p>Unter den angegebenen Kontaktdaten unseres Datenschutzbeauftragten können Sie jederzeit folgende Rechte ausüben:
</p>
<ul>
<li>Auskunft über Ihre bei uns gespeicherten Daten und deren Verarbeitung (Art. 15 DSGVO),</li>
<li>Berichtigung unrichtiger personenbezogener Daten (Art. 16 DSGVO),</li>
<li>Löschung Ihrer bei uns gespeicherten Daten (Art. 17 DSGVO),</li>
<li>Einschränkung der Datenverarbeitung, sofern wir Ihre Daten aufgrund gesetzlicher Pflichten noch nicht löschen
dürfen (Art. 18 DSGVO),</li>
<li>Widerspruch gegen die Verarbeitung Ihrer Daten bei uns (Art. 21 DSGVO) und</li>
<li>Datenübertragbarkeit, sofern Sie in die Datenverarbeitung eingewilligt haben oder einen Vertrag mit uns
abgeschlossen haben (Art. 20 DSGVO).</li>
</ul> ...
I would like to find a way on how to translate this without translating each single html tag but more like replacing an html file. Does anybody know how I would do this. Thanks in advance.
You can translate an HTML template using the instant method of TranslateService with DomSanitizer service. Something like this:
component.ts
constructor(
public translate: TranslateService,
public sanitizer: DomSanitizer
) {}
getTranslatedHtmlSnippet(s: string): SafeHtml {
return this.sanitizer.bypassSecurityTrustHtml(this.translate.instant('HOME.TEXT'));
}
and you can inject with innerHtml the translated HTML.
template.html
<div [innerHtml]="getTranslatedHtmlSnippet()"></div>
In order to work, you must provide a different template in the translation file.
i18n.json
{
"HOME": {
"TEXT": "<div style='color: red;'> eng <div>"
}
}
I leave you a link to stackbliz to see a running example:
https://stackblitz.com/edit/angular-translation-service-cpupat
However, I suggest you NOT use this kind of approach and always translate only string/content, not structure.
If you really need this kind of translation and is not restricted to a single component is better to create a pipe.

Onclick is working, but onload make problems?

I have this code:
<p onclick="tmtm();" id="TextMobile" class="Text">>> Für weitere Informationen klicken sie bitte mit Rechtsklick auf den jeweiligen Mitarbeiter</p>
and if I try it with onload it don't work, but onclick work:
<p onload="tmtm();" id="TextMobile" class="Text">>> Für weitere Informationen klicken sie bitte mit Rechtsklick auf den jeweiligen Mitarbeiter</p>
Javascript:
function tmtm(){
document.getElementById("TextMobile").innerHTML = "Für weitere Informationen halten sie bitte den jeweiligen Mitarbeiter gedrückt";}
I tried different things ...
For example I moved onload from to , but it don't work too
Can anyone help me?
You cannot use onload attribute on a paragraph.
If you absolutely must, you can achieve similar results by using the code below (using jQuery)
Script:
$('#foo').ready(function(){
alert('paragraph loaded');
});
HTML:
<p id="foo">Sample Paragraph</p>

I want text to change with a button. Can't put images or anything in it

I want to make a certain text changable with 2 buttons. This is what I have right now, this works fine. (Don't mind the language, I'm dutch)
<button onclick="document.getElementById('chgtext').innerHTML='NU WORDT HET ENGELS';">English</button>   <button onclick="document.getElementById('chgtext').innerHTML='Nu terug nederlands';">Nederlands</button>
<div id="chgtext">Heb je een vraag, een idee voor een post die je graag op mijn blog zou willen zien, of een andere reden waarom je mij wilt contacteren. Stuur me dan e-mail op (Of klik in de sidebar op het<font color="white">-</font><i class="fa fa-envelope"></i><font color="white">-</font>icoontje onder <em>social </em>)</div>
What I would like to do, is to put images and < font style,.... into the changing text. But I can't. I have already tried doing it with \' but it doesn't work either. This is another code I have, It works fine on the code snippet, but it does not work on my blog:
<button onclick="document.getElementById('chgtext').innerHTML='This is the default text. <img src=\'http://lorempixel.com/output/nightlife-q-c-50-50-6.jpg\'> with image <span style=\'color :red;\'>and color</span>';">English</button>   <button onclick="document.getElementById('chgtext').innerHTML='Text changed into Another <span style=\'color :red;\'>language</span>';">Nederlands</button>
<div id="chgtext">This is the default text. </div>
this is what I get --> http://oihanevalbuenaredondo.be/2017/02/03/test-2/
The end result I need is this:
<button onclick="document.getElementById('chgtext').innerHTML='NU WORDT HET ENGELS';">English</button>   <button onclick="document.getElementById('chgtext').innerHTML='Heb je een vraag, een idee voor een post die je graag op mijn blog zou willen zien, of een andere reden waarom je mij wilt contacteren. Stuur me dan e-mail op info#rosalea.be (Of klik in de sidebar op het<font color="white">-</font><i class="fa fa-envelope"></i><font color="white">-</font>icoontje onder <em>social </em>)';">Nederlands</button>
<div id="chgtext">Heb je een vraag, een idee voor een post die je graag op mijn blog zou willen zien, of een andere reden waarom je mij wilt contacteren. Stuur me dan e-mail op info#rosalea.be (Of klik in de sidebar op het<font color="white">-</font><i class="fa fa-envelope"></i><font color="white">-</font>icoontje onder <em>social </em>)</div>
But ofcourse that is not possible, How could I make this possible? (I don't have 2 text insert boxes for HTML AND CSS, I only have 1 box to put code in when creating a wordpress blog post
You may have had issues with Escaping the quotes
for example when setting values in javascript you can use either single or double quotes
someVar = "a value"; // this works fine
someVar = 'a value';// this works too
someVar = "a value that's an issue";// will work
someVar = 'a value that's an issue';// but this one breaks
to solve that issue you can use a \ to escape it like this
someVar = 'a value that\'s an issue';// now it works
I added your language as a data- attribute but could be done a s a class or even reading the button text itself if you wanted to.
I also separated your javascript into a document ready block that will keep all of your script logic separate from your display and make editing easier later (best practices) .
One resource that you will find incredible useful is the jQuery API
Sometime WYSIWYG editors strip script and reformat some Quotes. you may have to change some settings in WP to accommodate your script elements inside of a post
<script>
$(document).ready(function() {
$('.btn').on('click', function(e) {
output = '';
switch ($(this).data('lang')) {
case 'English':
output = 'This is the default text.'+
'<img src=\'http://lorempixel.com/output/nightlife-q-c-50-50-6.jpg\'> with image <span class=\'red\'>and color</span><p>Do you have a question, an idea for a post you\'d like to see on my blog, or any other reason you want to contact me. please send me email at info#rosalea.be (Or, in the sidebar on the - icon under social)</p>';
break;
case 'Nederlands':
output = 'Heb je een vraag, een idee voor een post die je graag op mijn blog zou willen zien, of een andere reden waarom je mij wilt contacteren. Stuur me dan e-mail op info#rosalea.be (Of klik in de sidebar op het<span class="white">-</span><i class="fa fa-envelope"></i><span class="white">-</span>icoontje onder <em>social </em>)';
break;
default:
output = 'This is the default text.';
}
$('#chgtext').html(output);
})
})
</script>
<div>
<button class="btn" data-lang="English">English</button>
<button class="btn" data-lang="Nederlands">Nederlands</button></div>
<div id="chgtext">This is the default text.</div>
/* add these lines to your css file if you want */
.white{
color:white;
}
.red{
color:red;
}
/*these should be in your framework already */
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

JSON output of a <br />(escaped) interpreted the browser not correctly

I have a json file like this
[
{
"titel": "Das \"Hexenbödele\" bei Lengstein",
"vorspann": "Sage vom Ritten, übertragen von P. Beda Weber. Im Wald oberhalb von Lengstein und von diesem Ort nicht weit entfernt liegt das \"Hexenbödele\", eine kleine Lichtung, in deren Mitte eine einzelne Lärche hoch aufragt. Diese Lärche ist mit einem auffälligen \"Hexenbesen\" und zudem mit einem Kruzifix geschmückt. Hier trafen sich nachts vor alten Zeiten häufig die Hexen der ganzen Umgegend und hielten mit dem Teufel wüste Gelage<br \/>",
"downloadlink1": "http://theweburl.com/files/content/557263_42961_1_0/das-hexenbödele-bei-lengstein-weber-483.pdf",
"downloadlink2": "http://theweburl.com/files/content/557263_42962_1_0/l-hexenbödele-di-longomoso.pdf",
"downloadlink3": "http://theweburl.com/files/content/557263_42963_1_0/the-hexenbödele-at-lengstein.pdf"
}
]
If I'm outputting that code in my browser(Chrome and FF) and the browser interpreted the <br \/> like a normal break line.
I've escaped all correctly..
Has any one here a idea how to fix that?
Thanks in advice
You have to escape html with entities (http://unicode.e-workers.de/entities.php).
The <br /> would look like this: <br />
It's because browser interprets the <br> tag when it encounters "<br" itself.
You should try <br /> to display <br /> in the browser.

Categories