The TypeScript click event listener automatically unbinds itself after execution

Just starting to get the hang of Typescript, coming from a JavaScript background. Ran into an issue and need some help troubleshooting.

document.querySelector("#sr").addEventListener("click", function () {
        console.log(1);
        new GetApi().entered_name();
    });

The event listener works fine initially, but not consistently afterwards. Oddly enough, removing new GetApi().entered_name() fixes the problem entirely.

Below is the function causing the trouble:

entered_name()
     {
       console.log(document.getElementById("fname").value);
        return fetch("https://localhost:5001/api?search="+document.getElementById("fname").value)
            .then(Response=>Response.json())
            .then(data=>{
         console.log(data[0]);
         let res =new UserData(data[0]);
         console.log(res);
         let obj = new Display1();
         obj.showUserData(res);  


       }).catch(err=>console.log(err));
     }

And here is the problematic showUserData():

export class Display1
{
    showUserData(obj : UserData){
    {
        document.body.innerHTML += "Props in HTML tags";
    }
}
}

Answer №1

When you call the showUserData method, it resets the DOM by adding a string to the inner html. This means that the element #sr is essentially recreated, requiring all events to be rebound to it. Consider using insertAdjacentHTML instead. You can do something like this:

document.body.insertAdjacentHTML('beforeend', "Props in HTML tags");

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

The AJAX request fails to execute once the webpage has finished loading for the first time

Hey there! I have a button group where the selected button triggers an ajax call. Check out the code below: <div class="btn-group" id="graphSelection"> <button type="button" class="btn disabled btn-info" id="post" onclick="graphSelec ...

Submit a POST request using CoffeeScript to get a string from the returned object

I am encountering a small issue. Whenever I execute myVar = $.post('/check_2/', JSON.stringify({"newname": window.NEWNAME,}), callback, 'json') The variable 'myVar' holds an object. When I use console.log myVar, the output i ...

Angular experiencing an issue with injector functionality

I encountered an error while using my app: Error: [$injector:unpr] http://errors.angularjs.org/1.3.2/$injector/unpr?p0=ProductResourceProvider%20%3C-%20ProductResource The situation is as follows: the app is designed to retrieve information from a web se ...

JavaScript formula for calculating dates together

I'm currently developing a PHP program for generating invoices. I'm implementing a datetimepicker to select the invoice generation date and due date. Now, I need the due date field to be automatically populated by adding a specific value to the i ...

What is the best way to implement a dynamic dropdown menu using react-bootstrap?

The react-bootstrap site provides an example code for forms, but I am struggling to find examples that utilize arrays to drive the options. <Input type="select" label="Multiple Select" multiple> <option value="select">select (multiple)< ...

Struggling to get this to function

Is there a way to modify the value of a variable? I have attempted to utilize "Promises," but it is not working and gives me an error. My goal is to load data into a table. /* Function for formatting row details */ function fnFormatDetails(oTable, nTr) { ...

Tips on specifying a default value when receiving data from an API

I am working with a dropdown list that is populated from an API call. Here is my code snippet: <label>User Code:</label> <select ng-options="c as c.User for c in userList" ng-model="selectedUser" id="search3"> </select> To fet ...

What is the best way to retrieve attributes from a through table using a query?

I am in the process of creating a straightforward shopping cart system. My structure includes a Cart model, a Product model, and a connection table called CartItems. Here are the associations: models.Cart.belongsToMany(models.Product, { through: 'Car ...

Adjustable header: resizing images and text overlay on images

Is there a way to make the images and text resize based on the size of the div or screen? I don't want the text to overflow the images when resizing. I've tried using the object-fit attribute but it hasn't worked. Any suggestions? <d ...

When navigating to a new route in VueJS with parameters, the browser displays the previously used

Scenario In my app, I am using vue.js 2.6 and vue-router 3.0. Within the app, there are links to detail pages set up like this: <div v-for="item in items"> <router-link :to="{name: 'details', params: {key: item.shortKey}}"> &l ...

When using Vue.js, styling SVGs with CSS proves difficult as it applies inline styles in the DOM rather than using class names

Recently, I tried to update the appearance of some SVG images using CSS, but to my surprise, nothing changed. Upon inspecting the page, I noticed that the styles were located under the 'element.style' tag, which may explain why my attempts were u ...

JavaScript Error: value.toUpperCase is not a valid method

I am attempting to implement a script that allows users to filter rows in a table based on the value they input. After updating a row, the page refreshes and all rows are displayed again. I am looking for a way to maintain the filtered rows after the refre ...

bespoke session with Next.js using Next-Auth

I encountered an issue while migrating my JS file to TSX. What I am trying to do is sign in with credentials and customize the session user to my user data. // api/auth/[...nextauth].js import NextAuth from "next-auth"; import Providers from &qu ...

Using any random function as a property value in a TypeScript React Component

I am facing a challenge in my React component where I need to define a property that can accept any arbitrary function which returns a value, regardless of the number of arguments it takes. What matters most to me is the return value of the function. Here ...

Utilize a PHP variable in a JavaScript file through Ajax for seamless functionality

In my PHP script, I retrieve the content of a query from a Postgresql database : <?php require_once 'connection.php'; $query1 = pg_query("This_is_my_query"); $instruction = "["; while ($row = pg_fetch_array($query1)) { ...

Determine the type of input and output based on another argument

When working with a function that takes an object of either TypeA or TypeB, the first parameter is used to specify the type of the object and the returned type depends on this first parameter. The issue arises in TypeScript where the type of the object is ...

Tips for testing two conditions in Angular ngIf

I am facing a little issue trying to make this *ngIf statement work as expected. My goal is to display the div only if it is empty and the user viewing it is the owner. If the user is a guest and the div is empty, then it should not be shown. Here is my cu ...

Is it possible to incorporate custom meta tags into next.js 13 using static metadata objects?

I'm trying to block Pinterest on my website by adding the meta tag <meta name="pinterest" content="nopin" /> in the site's header, but I'm uncertain how to do this in Next 13 using the new exported metadata object f ...

Looking for help in resolving console error displaying 'Uncaught (in promise)' notification

I've encountered an issue while trying to troubleshoot a problem that involves using the find() method, which is causing an error. import { CART_ADD_ITEM, CART_REMOVE_ITEM } from '../constants/cartConstant'; const cartReducers = (state = { ...

Adjust the current type in order to allow all properties to become optional

Looking at the structure of my base type: type MyForm = { email: string; password: string; } I'm wondering if there's a possibility to change MyForm into this optional version: type MyFormOptional = { email?: string | null; password?: st ...