<script>

var id = "432.000+444";
myFunc(id);
document.write("<a onclick=\"myFunc("+id+");\" href=#>Click me</a><br>");

function myFunc(id) {
    alert(id);
}

</script>

MyFunc(id) mencetak string secara normal, tetapi mengklik elemen akan mencetak 876 (memperlakukannya sebagai angka dan menambahkan 432 dan 444). Bagaimana saya bisa mencegah hal ini? Saya ingin itu selalu diperlakukan sebagai string.

-3
Kidades 18 Agustus 2017, 17:02

2 jawaban

Jawaban Terbaik

Masukkan dalam tanda kutip:

document.write("<a onclick=\"myFunc('"+id+"');\" href=#>Click me</a><br>");
// ---------------------------------^------^

FWIW, saya sangat menyarankan tidak menggunakan onxyz-attribute-style event handler. Untuk satu hal, fungsi yang Anda panggil dari mereka harus global, yang umumnya bukan hal yang baik. Sebagai gantinya, gunakan penanganan peristiwa modern (addEventListener, atau attachEvent pada IE lama; inilah fungsi yang menangani masalah itu ) atau setidaknya onclick properti.

var id = "432.000+444";
var link = document.createElement("a");
link.onclick = myFunc.bind(link, id);
link.href = "#";
link.appendTextNode("Click me");
appropriateParentElement.appendChild(link);
appropriateParentElement.appendChild(document.createElement("br"));

function myFunc(id) {
    alert(id);
}
3
T.J. Crowder 18 Agustus 2017, 14:10

Anda harus membungkusnya dengan tanda kutip.

                                    ↓      ↓
document.write("<a onclick=\"myFunc('"+id+"');\" href=#>Click me</a><br>");

Perhatikan kutipan tunggal.

2
Amy 18 Agustus 2017, 14:04