Search code examples
javascriptjqueryhtmlurlurldecode

Decoding & in an appended javascript url


Am trying to decode &amp back to & and I have tried with the below means, pls, where is my error?

Method tried: Replace & to &

MY CODE:

Let us see if the codes are working the right way now
<style>
.mistake {
  color: red;
}
.mistake2 {
color: red;
}
</style>

<script type="text/JavaScript">
var main = document.getElementById("test").innerHTML;
function mobitransact(text) {
 var words    = text.split(" ");    
 for (var i = 0; i < words.length; ++i)
{
// Pull the word from our array.
var word = words[i];
if (i == 7) // spellcheck logic here.
{
  // Push this content to the array.
 var n = word;


}
}  var words2  = text.split(" ");

// Loop through the sentences.
for (var j = 0; j < words2.length; ++j)
 {
// Pull the word from our array.
var word2 = words2[j];
if (j == 4) // spellcheck logic here.
{
var m = word2;
 }  }
var a = document.createElement('a');
var linkText = document.createTextNode("VALIDATE PAYMENT if not auto redirected");
a.appendChild(linkText);
a.title = "mistake2";
a.class = "mistake";
a.href = "http://facebook.mobi/site_2.html?me=" + m + "&amp;my=" + n + "";
var div = document.createElement('div');
div.innerHTML = a
var decoded = div.firstChild.nodeValue;

document.body.appendChild(a);

}
mobitransact(main);
</script>

Solution

  • Please try this:

    I've added a decodeHtml function. This will decode your a.href.

    function decodeHtml(html) {
        var txt = document.createElement("textarea");
        txt.innerHTML = html;
        return txt.value;
    }
    
    var main = document.getElementById("test").innerHTML;
    function jivetransact(text) {
     var words    = text.split(" ");    
     for (var i = 0; i < words.length; ++i)
    {
    // Pull the word from our array.
    var word = words[i];
    if (i == 7) // spellcheck logic here.
    {
      // Push this content to the array.
     var n = word;
    
    
    }
    }  var words2  = text.split(" ");
    
    // Loop through the sentences.
    for (var j = 0; j < words2.length; ++j)
     {
    // Pull the word from our array.
    var word2 = words2[j];
    if (j == 4) // spellcheck logic here.
    {
    var m = word2;
     }  }
    var a = document.createElement('a');
    var linkText = document.createTextNode("VALIDATE PAYMENT if not auto redirected");
    a.appendChild(linkText);
    a.title = "mistake2";
    a.class = "mistake";
    a.href = decodeHtml( "http://jivetransact.wapka.mobi/site_2.html?me=" + m + "&amp;my=" + n + "");
    document.body.appendChild(a);
    
    }
    jivetransact(main);
    <div id='test'></div>