{"id":32704,"date":"2025-10-25T01:40:54","date_gmt":"2025-10-24T22:40:54","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32704"},"modified":"2025-10-25T01:40:54","modified_gmt":"2025-10-24T22:40:54","slug":"javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/","title":{"rendered":"JavaScript&#8217;te innerText ve innerHTML Kullanarak DOM Manip\u00fclasyonu"},"content":{"rendered":"<p><body><\/p>\n<h2>JavaScript&#8217;te innerText ve innerHTML Kullanarak DOM Manip\u00fclasyonu<\/h2>\n<p>Web sayfalar\u0131, kullan\u0131c\u0131larla etkile\u015fim kuran dinamik yap\u0131lar haline geldik\u00e7e, JavaScript&#8217;in bu sayfalar\u0131 de\u011fi\u015ftirebilme yetene\u011fi kritik bir \u00f6neme sahip olmu\u015ftur. Bu yetene\u011fin temelinde Yorumlanabilir Belge Modeli (Document Object Model &#8211; DOM) ve bu modeli manip\u00fcle etmek i\u00e7in kullan\u0131lan \u00e7e\u015fitli JavaScript \u00f6zellikleri yatar. DOM, bir web sayfas\u0131n\u0131n yap\u0131land\u0131r\u0131lm\u0131\u015f bir g\u00f6sterimidir ve JavaScript&#8217;in sayfadaki her bir \u00f6\u011feye eri\u015fmesine ve bunlar\u0131 de\u011fi\u015ftirmesine olanak tan\u0131r. Bu makalede, DOM manip\u00fclasyonunun en yayg\u0131n ve g\u00fc\u00e7l\u00fc yollar\u0131ndan ikisi olan <code>innerText<\/code> ve <code>innerHTML<\/code> \u00f6zelliklerini derinlemesine inceleyece\u011fiz. Bu iki \u00f6zelli\u011fin ne i\u015fe yarad\u0131\u011f\u0131n\u0131, nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131, birbirlerinden farklar\u0131n\u0131, g\u00fcvenlik ve performans etkilerini ve hangi durumlarda hangisinin tercih edilmesi gerekti\u011fini detayl\u0131 \u00f6rneklerle a\u00e7\u0131klayaca\u011f\u0131z.<\/p>\n<h3>DOM (Document Object Model) Nedir?<\/h3>\n<p>DOM, HTML ve XML belgeleri i\u00e7in bir programlama aray\u00fcz\u00fcd\u00fcr. Bir web sayfas\u0131n\u0131, her biri belgenin bir par\u00e7as\u0131n\u0131 temsil eden nesnelerin ve d\u00fc\u011f\u00fcmlerin (nodes) bir a\u011fac\u0131 olarak temsil eder. Bu a\u011fa\u00e7 yap\u0131s\u0131 sayesinde JavaScript, belgenin i\u00e7eri\u011fini, yap\u0131s\u0131n\u0131 ve stilini dinamik olarak de\u011fi\u015ftirebilir. \u00d6rne\u011fin, bir sayfadaki bir paragraf\u0131n metnini de\u011fi\u015ftirebilir, yeni bir resim ekleyebilir veya bir d\u00fc\u011fmenin rengini de\u011fi\u015ftirebilirsiniz.<\/p>\n<p>DOM&#8217;un temel \u00f6\u011feleri \u015funlard\u0131r:<br \/>\n*   <strong>Belge (Document) Nesnesi:<\/strong> T\u00fcm DOM a\u011fac\u0131n\u0131n k\u00f6k\u00fcd\u00fcr ve sayfan\u0131n kendisine eri\u015fim sa\u011flar.<br \/>\n*   <strong>Element Nesneleri:<\/strong> HTML etiketlerini (<code><\/p>\n<div><\/code>, <code><\/p>\n<p><\/code>, <code><a><\/code> vb.) temsil eder.<br \/>\n*   <strong>Metin (Text) D\u00fc\u011f\u00fcmleri:<\/strong> Elementlerin i\u00e7indeki saf metni temsil eder.<br \/>\n*   <strong>\u00d6znitelik (Attribute) D\u00fc\u011f\u00fcmleri:<\/strong> Elementlerin \u00f6zniteliklerini (<code>href<\/code>, <code>src<\/code>, <code>class<\/code> vb.) temsil eder.<\/p>\n<p>JavaScript, bu nesneler ve d\u00fc\u011f\u00fcmler arac\u0131l\u0131\u011f\u0131yla DOM ile etkile\u015fime girer. <code>document.getElementById()<\/code>, <code>document.querySelector()<\/code> gibi metotlar belirli elementlere eri\u015fmek i\u00e7in kullan\u0131l\u0131rken, <code>innerText<\/code> ve <code>innerHTML<\/code> gibi \u00f6zellikler bu elementlerin i\u00e7eri\u011fini okumak veya de\u011fi\u015ftirmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h3>innerText \u00d6zelli\u011fi<\/h3>\n<p><code>innerText<\/code> \u00f6zelli\u011fi, bir HTML elementinin &#8220;g\u00f6r\u00fcn\u00fcr&#8221; metin i\u00e7eri\u011fini temsil eder. Yani, kullan\u0131c\u0131 taraf\u0131ndan taray\u0131c\u0131da g\u00f6r\u00fcnen metni d\u00f6nd\u00fcr\u00fcr veya ayarlar. Bu \u00f6zellik, elementin i\u00e7indeki t\u00fcm HTML etiketlerini g\u00f6z ard\u0131 eder ve yaln\u0131zca metin i\u00e7eri\u011fini dikkate al\u0131r.<\/p>\n<h4>innerText&#8217;in Kullan\u0131m\u0131<\/h4>\n<p><strong>Bir elementin metin i\u00e7eri\u011fini okuma:<\/strong><br \/>\nBir elementin mevcut metin i\u00e7eri\u011fini almak i\u00e7in <code>innerText<\/code> \u00f6zelli\u011fini kullanabilirsiniz.<\/p>\n<pre><code class=\"language-javascript\">\/\/ HTML yap\u0131s\u0131: <p id=\"mesaj\">Merhaba D\u00fcnya!<\/p>\nlet paragraf = document.getElementById('mesaj');\nlet metin = paragraf.innerText;\nconsole.log(metin); \/\/ \u00c7\u0131kt\u0131: \"Merhaba D\u00fcnya!\"<\/code><\/pre>\n<p><strong>Bir elementin metin i\u00e7eri\u011fini de\u011fi\u015ftirme:<\/strong><br \/>\nBir elementin metin i\u00e7eri\u011fini de\u011fi\u015ftirmek i\u00e7in <code>innerText<\/code> \u00f6zelli\u011fine yeni bir dize atayabilirsiniz.<\/p>\n<pre><code class=\"language-javascript\">\/\/ HTML yap\u0131s\u0131: <div id=\"bilgi\">Eski bilgi<\/div>\nlet bilgiDiv = document.getElementById('bilgi');\nbilgiDiv.innerText = 'Yeni ve g\u00fcncel bilgi.';\n\/\/ Art\u0131k div i\u00e7eri\u011fi: <div id=\"bilgi\">Yeni ve g\u00fcncel bilgi.<\/div><\/code><\/pre>\n<p>E\u011fer atad\u0131\u011f\u0131n\u0131z dize HTML etiketleri i\u00e7eriyorsa, <code>innerText<\/code> bu etiketleri metin olarak i\u015fler ve taray\u0131c\u0131da do\u011frudan g\u00f6r\u00fcnt\u00fcler.<\/p>\n<pre><code class=\"language-javascript\">\/\/ HTML yap\u0131s\u0131: <span id=\"uyari\"><\/span>\nlet uyariSpan = document.getElementById('uyari');\nuyariSpan.innerText = '<strong>Dikkat:<\/strong> Bu bir uyar\u0131d\u0131r.';\n\/\/ Art\u0131k span i\u00e7eri\u011fi: <span id=\"uyari\">&lt;strong&gt;Dikkat:&lt;\/strong&gt; Bu bir uyar\u0131d\u0131r.<\/span>\n\/\/ Taray\u0131c\u0131da: <strong>Dikkat:<\/strong> Bu bir uyar\u0131d\u0131r. \u015feklinde g\u00f6r\u00fcn\u00fcr.<\/code><\/pre>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc gibi, <code>innerText<\/code> HTML etiketlerini otomatik olarak ka\u00e7\u0131r\u0131r (escape eder), yani onlar\u0131 \u00f6zel karakterlere d\u00f6n\u00fc\u015ft\u00fcr\u00fcr (<code><<\/code> -> <code><<\/code>, <code>><\/code> -> <code>><\/code>). Bu, g\u00fcvenlik a\u00e7\u0131s\u0131ndan \u00f6nemli bir \u00f6zelliktir.<\/p>\n<h4>innerText'in \u00d6zellikleri ve Davran\u0131\u015flar\u0131<\/h4>\n<p>*   <strong>G\u00f6r\u00fcn\u00fcr Metin Odakl\u0131l\u0131k:<\/strong> <code>innerText<\/code>, bir elementin kullan\u0131c\u0131 taraf\u0131ndan g\u00f6r\u00fcnen metin i\u00e7eri\u011fini d\u00f6nd\u00fcr\u00fcr. Bu, CSS ile <code>display: none;<\/code> veya <code>visibility: hidden;<\/code> gibi stillerle gizlenmi\u015f metinleri i\u00e7ermeyece\u011fi anlam\u0131na gelir.<\/p>\n<pre><code class=\"language-javascript\">\/\/ HTML yap\u0131s\u0131:\n    \/\/ <div id=\"kapsayici\">\n    \/\/   <p>G\u00f6r\u00fcn\u00fcr metin.<\/p>\n    \/\/   <span style=\"display: none;\">Gizli metin.<\/span>\n    \/\/ <\/div>\n    let kapsayici = document.getElementById('kapsayici');\n    console.log(kapsayici.innerText); \/\/ \u00c7\u0131kt\u0131: \"G\u00f6r\u00fcn\u00fcr metin.\" (Gizli metin dahil edilmez)<\/code><\/pre>\n<p>*   <strong>Stil Hesaplamas\u0131:<\/strong> <code>innerText<\/code> de\u011feri al\u0131n\u0131rken taray\u0131c\u0131, elementin nihai hesaplanm\u0131\u015f stilini dikkate al\u0131r. Bu, DOM'un yeniden d\u00fczenlenmesini (reflow) tetikleyebilir ve b\u00fcy\u00fck veya karma\u015f\u0131k DOM a\u011fa\u00e7lar\u0131nda performans d\u00fc\u015f\u00fc\u015f\u00fcne neden olabilir.<br \/>\n*   <strong>Bo\u015fluk ve Sat\u0131r Sonu Karakterleri:<\/strong> <code>innerText<\/code>, metin i\u00e7eri\u011findeki bo\u015fluklar\u0131 ve sat\u0131r sonu karakterlerini genellikle taray\u0131c\u0131n\u0131n g\u00f6r\u00fcnt\u00fcleme \u015fekline uygun olarak korur. \u00d6rne\u011fin, birden fazla bo\u015fluk tek bir bo\u015flu\u011fa indirgenebilir (CSS <code>white-space<\/code> \u00f6zelli\u011fine ba\u011fl\u0131 olarak).<br \/>\n*   <strong>G\u00fcvenlik:<\/strong> <code>innerText<\/code> \u00f6zelli\u011fi, i\u00e7erisine atanan t\u00fcm HTML etiketlerini metin olarak i\u015fledi\u011fi i\u00e7in XSS (Cross-Site Scripting) sald\u0131r\u0131lar\u0131na kar\u015f\u0131 do\u011fal bir koruma sa\u011flar. Kullan\u0131c\u0131dan gelen verileri g\u00fcvenli bir \u015fekilde g\u00f6r\u00fcnt\u00fclemek i\u00e7in idealdir.<\/p>\n<h4>innerText'in Avantajlar\u0131<\/h4>\n<p>*   <strong>G\u00fcvenlik:<\/strong> XSS sald\u0131r\u0131lar\u0131na kar\u015f\u0131 do\u011fal koruma sa\u011flar. Kullan\u0131c\u0131 taraf\u0131ndan girilen verileri g\u00fcvenli bir \u015fekilde g\u00f6r\u00fcnt\u00fclemek i\u00e7in en iyi se\u00e7enektir.<br \/>\n*   <strong>Basitlik:<\/strong> Sadece metin i\u00e7eri\u011fiyle ilgileniyorsan\u0131z kullan\u0131m\u0131 son derece basittir.<br \/>\n*   <strong>G\u00f6r\u00fcn\u00fcrl\u00fck:<\/strong> Yaln\u0131zca kullan\u0131c\u0131n\u0131n g\u00f6rd\u00fc\u011f\u00fc metni d\u00f6nd\u00fcrd\u00fc\u011f\u00fc i\u00e7in, sayfan\u0131n mevcut g\u00f6rsel durumunu yans\u0131t\u0131r.<\/p>\n<h4>innerText'in Dezavantajlar\u0131<\/h4>\n<p>*   <strong>HTML Ekleme K\u0131s\u0131tlamas\u0131:<\/strong> HTML etiketlerini metin olarak i\u015fledi\u011fi i\u00e7in, dinamik olarak HTML yap\u0131lar\u0131 olu\u015fturmak veya zengin metin i\u00e7eri\u011fi eklemek i\u00e7in kullan\u0131lamaz.<br \/>\n*   <strong>Performans:<\/strong> De\u011ferini al\u0131rken taray\u0131c\u0131n\u0131n stil hesaplamas\u0131 yapmas\u0131 gerekti\u011fi i\u00e7in, \u00f6zellikle b\u00fcy\u00fck DOM a\u011fa\u00e7lar\u0131nda veya s\u0131k\u00e7a \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda performans d\u00fc\u015f\u00fc\u015f\u00fcne neden olabilir. Bu, reflow ve repaint i\u015flemlerini tetikler.<\/p>\n<h3>innerHTML \u00d6zelli\u011fi<\/h3>\n<p><code>innerHTML<\/code> \u00f6zelli\u011fi, bir HTML elementinin \"i\u00e7 HTML\" i\u00e7eri\u011fini temsil eder. Yani, elementin ba\u015flang\u0131\u00e7 ve biti\u015f etiketleri aras\u0131ndaki t\u00fcm HTML i\u015faretlemesini (etiketler, metin, yorumlar vb.) d\u00f6nd\u00fcr\u00fcr veya ayarlar. Bu \u00f6zellik, dinamik olarak karma\u015f\u0131k HTML yap\u0131lar\u0131 olu\u015fturmak veya mevcut bir elementin i\u00e7eri\u011fini tamamen de\u011fi\u015ftirmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h4>innerHTML'in Kullan\u0131m\u0131<\/h4>\n<p><strong>Bir elementin HTML i\u00e7eri\u011fini okuma:<\/strong><br \/>\nBir elementin mevcut HTML i\u00e7eri\u011fini almak i\u00e7in <code>innerHTML<\/code> \u00f6zelli\u011fini kullanabilirsiniz.<\/p>\n<pre><code class=\"language-javascript\">\/\/ HTML yap\u0131s\u0131: <div id=\"liste\"><ul><li>\u00d6\u011fe 1<\/li><li>\u00d6\u011fe 2<\/li><\/ul><\/div>\nlet listeDiv = document.getElementById('liste');\nlet htmlIcerik = listeDiv.innerHTML;\nconsole.log(htmlIcerik); \/\/ \u00c7\u0131kt\u0131: \"<ul><li>\u00d6\u011fe 1<\/li><li>\u00d6\u011fe 2<\/li><\/ul>\"<\/code><\/pre>\n<p><strong>Bir elementin HTML i\u00e7eri\u011fini de\u011fi\u015ftirme:<\/strong><br \/>\nBir elementin HTML i\u00e7eri\u011fini de\u011fi\u015ftirmek veya yeni HTML eklemek i\u00e7in <code>innerHTML<\/code> \u00f6zelli\u011fine bir HTML dizesi atayabilirsiniz.<\/p>\n<pre><code class=\"language-javascript\">\/\/ HTML yap\u0131s\u0131: <div id=\"icerik\">Eski i\u00e7erik<\/div>\nlet icerikDiv = document.getElementById('icerik');\nicerikDiv.innerHTML = '<p>Bu <strong>yeni<\/strong> bir paragraft\u0131r.<\/p>';\n\/\/ Art\u0131k div i\u00e7eri\u011fi: <div id=\"icerik\"><p>Bu <strong>yeni<\/strong> bir paragraft\u0131r.<\/p><\/div><\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>icerikDiv<\/code>'in t\u00fcm eski i\u00e7eri\u011fi silinir ve yerine yeni <code><\/p>\n<p><\/code> etiketi ve i\u00e7indeki metin yerle\u015ftirilir. Taray\u0131c\u0131, atanan HTML dizesini ayr\u0131\u015ft\u0131r\u0131r ve ilgili DOM d\u00fc\u011f\u00fcmlerini olu\u015fturur.<\/p>\n<p><strong>Mevcut i\u00e7eri\u011fe ekleme yapma:<\/strong><br \/>\n<code>innerHTML<\/code> mevcut i\u00e7eri\u011fi tamamen de\u011fi\u015ftirdi\u011fi i\u00e7in, mevcut i\u00e7eri\u011fe ekleme yapmak istiyorsan\u0131z, mevcut <code>innerHTML<\/code> de\u011ferini al\u0131p yeni i\u00e7eri\u011fi buna ekleyip tekrar ataman\u0131z gerekir.<\/p>\n<pre><code class=\"language-javascript\">\/\/ HTML yap\u0131s\u0131: <ul id=\"liste\"><li>Mevcut \u00d6\u011fe<\/li><\/ul>\nlet liste = document.getElementById('liste');\nliste.innerHTML += '<li>Yeni \u00d6\u011fe<\/li>';\n\/\/ Art\u0131k liste i\u00e7eri\u011fi: <ul><li>Mevcut \u00d6\u011fe<\/li><li>Yeni \u00d6\u011fe<\/li><\/ul><\/code><\/pre>\n<p>Ancak, bu yakla\u015f\u0131m (mevcut <code>innerHTML<\/code>'i al\u0131p \u00fczerine ekleyip tekrar atama) b\u00fcy\u00fck DOM yap\u0131lar\u0131 i\u00e7in performans sorunlar\u0131na yol a\u00e7abilir, \u00e7\u00fcnk\u00fc her atamada taray\u0131c\u0131 t\u00fcm i\u00e7eri\u011fi yeniden ayr\u0131\u015ft\u0131r\u0131r ve DOM'u yeniden olu\u015fturur. Bu t\u00fcr durumlarda <code>insertAdjacentHTML<\/code> veya DOM API'lerini kullanmak daha verimlidir.<\/p>\n<h4>innerHTML'in \u00d6zellikleri ve Davran\u0131\u015flar\u0131<\/h4>\n<p>*   <strong>HTML Ayr\u0131\u015ft\u0131rma:<\/strong> <code>innerHTML<\/code>'e bir dize atand\u0131\u011f\u0131nda, taray\u0131c\u0131 bu dizeyi HTML olarak ayr\u0131\u015ft\u0131r\u0131r ve ortaya \u00e7\u0131kan DOM d\u00fc\u011f\u00fcmlerini hedef elementin i\u00e7ine yerle\u015ftirir. Bu i\u015flem, mevcut t\u00fcm \u00e7ocuk d\u00fc\u011f\u00fcmlerinin kald\u0131r\u0131lmas\u0131 ve yenilerinin olu\u015fturulmas\u0131 anlam\u0131na gelir.<br \/>\n*   <strong>G\u00fcvenlik Riski (XSS):<\/strong> <code>innerHTML<\/code>, atanan dizeyi HTML olarak yorumlad\u0131\u011f\u0131 i\u00e7in, k\u00f6t\u00fc niyetli kullan\u0131c\u0131 girdileriyle kullan\u0131ld\u0131\u011f\u0131nda XSS sald\u0131r\u0131lar\u0131na kap\u0131 a\u00e7abilir. E\u011fer kullan\u0131c\u0131dan gelen ve g\u00fcvenilmeyen bir dizeyi do\u011frudan <code>innerHTML<\/code>'e atarsan\u0131z, bu dize i\u00e7indeki <code><script><\/code> etiketleri veya olay i\u015fleyicileri \u00e7al\u0131\u015ft\u0131r\u0131labilir.<br \/>\n*   <strong>Performans:<\/strong> <code>innerHTML<\/code>'in performans\u0131, atanan HTML dizesinin boyutuna ve karma\u015f\u0131kl\u0131\u011f\u0131na ba\u011fl\u0131d\u0131r. K\u00fc\u00e7\u00fck, basit HTML bloklar\u0131 i\u00e7in h\u0131zl\u0131 olabilirken, \u00e7ok b\u00fcy\u00fck ve karma\u015f\u0131k HTML bloklar\u0131 i\u00e7in DOM'u yeniden ayr\u0131\u015ft\u0131rma ve olu\u015fturma maliyeti y\u00fcksek olabilir. Ancak <code>innerText<\/code> gibi stil hesaplamas\u0131 yapmad\u0131\u011f\u0131 i\u00e7in baz\u0131 durumlarda daha h\u0131zl\u0131 olabilir.<\/p>\n<h4>innerHTML'in Avantajlar\u0131<\/h4>\n<p>*   <strong>Zengin \u0130\u00e7erik Ekleme:<\/strong> Metinle birlikte HTML etiketleri, resimler, ba\u011flant\u0131lar ve di\u011fer t\u00fcm HTML yap\u0131lar\u0131n\u0131 dinamik olarak eklemenizi sa\u011flar.<br \/>\n*   <strong>Kolayl\u0131k:<\/strong> \u00d6zellikle k\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli HTML bloklar\u0131n\u0131 h\u0131zl\u0131ca olu\u015fturmak veya de\u011fi\u015ftirmek i\u00e7in pratik bir y\u00f6ntemdir.<br \/>\n*   <strong>T\u00fcm \u0130\u00e7eri\u011fi De\u011fi\u015ftirme:<\/strong> Bir elementin t\u00fcm i\u00e7eri\u011fini tek bir i\u015flemle tamamen de\u011fi\u015ftirmek istedi\u011finizde kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h4>innerHTML'in Dezavantajlar\u0131<\/h4>\n<p>*   <strong>G\u00fcvenlik A\u00e7\u0131\u011f\u0131 (XSS):<\/strong> En b\u00fcy\u00fck dezavantaj\u0131, g\u00fcvenilmeyen kaynaklardan gelen verilerle kullan\u0131ld\u0131\u011f\u0131nda XSS sald\u0131r\u0131lar\u0131na kar\u015f\u0131 savunmas\u0131z olmas\u0131d\u0131r.<br \/>\n*   <strong>Mevcut \u0130\u00e7eri\u011fi Silme:<\/strong> <code>innerHTML<\/code>'e atama yapt\u0131\u011f\u0131n\u0131zda, elementin i\u00e7indeki t\u00fcm mevcut i\u00e7erik (metin, di\u011fer elementler, olay dinleyicileri) tamamen silinir ve yerine yeni i\u00e7erik gelir. Bu, \u00f6zellikle mevcut olay dinleyicilerini kaybetmenize neden olabilir.<br \/>\n*   <strong>Performans (B\u00fcy\u00fck De\u011fi\u015fiklikler \u0130\u00e7in):<\/strong> Mevcut i\u00e7eri\u011fe ekleme yapmak i\u00e7in <code>innerHTML += ...<\/code> kullanmak, her seferinde t\u00fcm DOM a\u011fac\u0131n\u0131n yeniden ayr\u0131\u015ft\u0131r\u0131lmas\u0131na ve olu\u015fturulmas\u0131na yol a\u00e7t\u0131\u011f\u0131 i\u00e7in verimsizdir.<\/p>\n<h3>innerText ve innerHTML Aras\u0131ndaki Temel Farklar<\/h3>\n<p>Bu iki \u00f6zellik aras\u0131ndaki temel farklar\u0131 \u00f6zetleyelim:<\/p>\n<p>| \u00d6zellik           | innerText                                   | innerHTML                                          |<br \/>\n| :---------------- | :------------------------------------------ | :------------------------------------------------- |<br \/>\n| <strong>\u0130\u00e7erik T\u00fcr\u00fc<\/strong>   | Yaln\u0131zca metin i\u00e7eri\u011fi                      | HTML i\u015faretlemesi (etiketler dahil)                |<br \/>\n| <strong>G\u00fcvenlik<\/strong>      | XSS'e kar\u015f\u0131 g\u00fcvenli (HTML'i ka\u00e7\u0131r\u0131r)       | XSS riski ta\u015f\u0131r (HTML'i ayr\u0131\u015ft\u0131r\u0131r ve \u00e7al\u0131\u015ft\u0131r\u0131r) |<br \/>\n| <strong>G\u00f6r\u00fcn\u00fcrl\u00fck<\/strong>    | Sadece g\u00f6r\u00fcn\u00fcr metni d\u00f6nd\u00fcrur (CSS etkisi) | Gizli HTML'i de d\u00f6nd\u00fcr\u00fcr (CSS etkisi yok)          |<br \/>\n| <strong>Stil Hesaplama<\/strong> | Evet, stil hesaplamalar\u0131n\u0131 tetikler        | Hay\u0131r, stil hesaplamalar\u0131n\u0131 tetiklemez             |<br \/>\n| <strong>Bo\u015fluk \u0130\u015fleme<\/strong> | Taray\u0131c\u0131n\u0131n render \u015fekline g\u00f6re bo\u015fluklar\u0131 i\u015fler | HTML'deki bo\u015fluklar\u0131 oldu\u011fu gibi korur             |<br \/>\n| <strong>Performans<\/strong>    | Stil hesaplamalar\u0131 nedeniyle yava\u015f olabilir | Ayr\u0131\u015ft\u0131rma maliyeti nedeniyle yava\u015f olabilir (\u00f6zellikle b\u00fcy\u00fck bloklar i\u00e7in) |<br \/>\n| <strong>Kullan\u0131m Amac\u0131<\/strong>| Sadece metin okuma\/yazma                   | Zengin HTML i\u00e7eri\u011fi okuma\/yazma                    |<\/p>\n<h3>Hangi Durumda Hangisini Kullanmal\u0131y\u0131z?<\/h3>\n<p>Do\u011fru arac\u0131 do\u011fru yerde kullanmak, hem uygulaman\u0131z\u0131n g\u00fcvenli\u011fi hem de performans\u0131 i\u00e7in hayati \u00f6neme sahiptir.<\/p>\n<h4>innerText Kullan\u0131m Senaryolar\u0131:<\/h4>\n<p>*   <strong>G\u00fcvenli Metin G\u00f6r\u00fcnt\u00fcleme:<\/strong> Kullan\u0131c\u0131dan al\u0131nan veya g\u00fcvenilmeyen bir kaynaktan gelen metin verilerini bir sayfada g\u00f6stermeniz gerekti\u011finde, <code>innerText<\/code> g\u00fcvenlik nedeniyle her zaman tercih edilmelidir. Bu, olas\u0131 XSS sald\u0131r\u0131lar\u0131n\u0131 \u00f6nler.<\/p>\n<pre><code class=\"language-javascript\">let userInput = \"<script>alert('XSS Sald\u0131r\u0131s\u0131!');<\/script>Merhaba!\";\n    document.getElementById('mesaj').innerText = userInput; \/\/ G\u00fcvenli: Script \u00e7al\u0131\u015fmaz, metin olarak g\u00f6r\u00fcn\u00fcr.<\/code><\/pre>\n<p>*   <strong>Sadece Metin \u0130\u00e7eri\u011fini G\u00fcncelleme:<\/strong> Bir elementin i\u00e7indeki metni de\u011fi\u015ftirmek istedi\u011finizde ve bu metnin i\u00e7inde herhangi bir HTML etiketi olmas\u0131n\u0131 beklemedi\u011finizde.<\/p>\n<pre><code class=\"language-javascript\">document.getElementById('sayac').innerText = <code>Kalan s\u00fcre: ${saniye} saniye<\/code>;<\/code><\/pre>\n<p>*   <strong>Bir Elementin G\u00f6r\u00fcn\u00fcr Metnini Sorgulama:<\/strong> Bir elementin kullan\u0131c\u0131 taraf\u0131ndan g\u00f6r\u00fcnen metin i\u00e7eri\u011fini almak istedi\u011finizde.<\/p>\n<pre><code class=\"language-javascript\">let baslikMetni = document.getElementById('baslik').innerText;\n    if (baslikMetni.includes('\u00d6nemli')) {\n        \/\/ ...\n    }<\/code><\/pre>\n<h4>innerHTML Kullan\u0131m Senaryolar\u0131:<\/h4>\n<p>*   <strong>Dinamik Olarak Karma\u015f\u0131k HTML Yap\u0131lar\u0131 Olu\u015fturma:<\/strong> Sunucudan gelen veya JavaScript'te olu\u015fturulan zengin HTML i\u00e7eri\u011fini bir sayfaya eklemeniz gerekti\u011finde.<\/p>\n<pre><code class=\"language-javascript\">let urunler = [\n        { ad: \"Laptop\", fiyat: 1200 },\n        { ad: \"Mouse\", fiyat: 25 }\n    ];\n    let urunListesiHTML = '<ul>';\n    urunler.forEach(urun => {\n        urunListesiHTML += <code><li><strong>${urun.ad}<\/strong> - ${urun.fiyat} TL<\/li><\/code>;\n    });\n    urunListesiHTML += '<\/ul>';\n    document.getElementById('urunler').innerHTML = urunListesiHTML;<\/code><\/pre>\n<p>*   <strong>Sunucudan Gelen G\u00fcvenilir HTML \u0130\u00e7eri\u011fini G\u00f6sterme:<\/strong> E\u011fer sunucudan gelen HTML i\u00e7eri\u011finin g\u00fcvenli oldu\u011fundan eminseniz (yani, k\u00f6t\u00fc niyetli kod i\u00e7ermedi\u011finden), <code>innerHTML<\/code> kullanabilirsiniz. Ancak bu g\u00fcvenli\u011fi sa\u011flamak sunucunun sorumlulu\u011fundad\u0131r.<br \/>\n*   <strong>Bir Elementin \u0130\u00e7indeki T\u00fcm \u0130\u00e7eri\u011fi S\u0131f\u0131rlama ve Yeniden Doldurma:<\/strong> Bir elementin i\u00e7indeki t\u00fcm mevcut DOM yap\u0131s\u0131n\u0131 kald\u0131r\u0131p yerine tamamen yeni bir yap\u0131 koymak istedi\u011finizde.<\/p>\n<pre><code class=\"language-javascript\">document.getElementById('tablo').innerHTML = '<tr><th>Ad<\/th><th>Ya\u015f<\/th><\/tr>' +\n                                                '<tr><td>Ali<\/td><td>30<\/td><\/tr>';<\/code><\/pre>\n<h3>G\u00fcvenlik Endi\u015feleri: XSS ve innerHTML<\/h3>\n<p>Cross-Site Scripting (XSS), web uygulamalar\u0131nda s\u0131k\u00e7a rastlanan bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131d\u0131r. K\u00f6t\u00fc niyetli kullan\u0131c\u0131lar, web sayfalar\u0131na zararl\u0131 istemci taraf\u0131 komut dosyalar\u0131 (genellikle JavaScript) enjekte ederek di\u011fer kullan\u0131c\u0131lar\u0131n taray\u0131c\u0131lar\u0131nda bu komut dosyalar\u0131n\u0131n \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. Bu, oturum \u00e7erezlerinin \u00e7al\u0131nmas\u0131, hassas verilerin ele ge\u00e7irilmesi veya web sitesinin g\u00f6r\u00fcn\u00fcm\u00fcn\u00fcn de\u011fi\u015ftirilmesi gibi ciddi sonu\u00e7lara yol a\u00e7abilir.<\/p>\n<p><code>innerHTML<\/code> \u00f6zelli\u011fi, e\u011fer dikkatli kullan\u0131lmazsa XSS sald\u0131r\u0131lar\u0131 i\u00e7in potansiyel bir vekt\u00f6r olu\u015fturur. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-javascript\">let kullaniciYorumu = \"<img src='x' onerror='alert(\\\"XSS Sald\u0131r\u0131s\u0131!\\\")'>\";\ndocument.getElementById('yorumAlani').innerHTML = kullaniciYorumu;\n\/\/ Taray\u0131c\u0131, ge\u00e7ersiz resim y\u00fcklemeye \u00e7al\u0131\u015facak ve onerror olay\u0131nda alert() \u00e7al\u0131\u015facakt\u0131r.<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>onerror<\/code> olay i\u015fleyicisi k\u00f6t\u00fc niyetli kodu \u00e7al\u0131\u015ft\u0131r\u0131r. Daha karma\u015f\u0131k sald\u0131r\u0131lar, <code>document.cookie<\/code>'yi bir sald\u0131rgan\u0131n sunucusuna g\u00f6nderebilir veya DOM'u manip\u00fcle ederek kullan\u0131c\u0131y\u0131 yan\u0131ltabilir.<\/p>\n<h4>Korunma Y\u00f6ntemleri:<\/h4>\n<p>1.  <strong>Asla G\u00fcvenilmeyen Kullan\u0131c\u0131 Girdilerini Do\u011frudan <code>innerHTML<\/code>'e Aktarmay\u0131n:<\/strong> Bu, alt\u0131n kurald\u0131r. Kullan\u0131c\u0131dan gelen herhangi bir veriyi (yorumlar, profil bilgileri vb.) <code>innerHTML<\/code> ile sayfaya eklemeden \u00f6nce daima i\u015fleme tabi tutun.<br \/>\n2.  <strong>Sanitizasyon (Temizleme):<\/strong> E\u011fer kullan\u0131c\u0131lar\u0131n zengin metin (HTML) girmesine izin vermeniz gerekiyorsa, girdiyi g\u00fcvenli bir \u015fekilde temizlemeniz (sanitizasyon) \u015fartt\u0131r. Bu, yaln\u0131zca izin verilen HTML etiketlerini ve \u00f6zniteliklerini b\u0131rak\u0131p di\u011fer t\u00fcm potansiyel olarak zararl\u0131 etiketleri veya \u00f6znitelikleri kald\u0131rma i\u015flemidir.<br \/>\n    *   <strong>K\u00fct\u00fcphaneler Kullan\u0131n:<\/strong> DOMPurify gibi g\u00fcvenlik odakl\u0131, iyi test edilmi\u015f k\u00fct\u00fcphaneler bu i\u015fi sizin i\u00e7in yapar. Kendi sanitizasyon fonksiyonunuzu yazmak olduk\u00e7a zordur ve genellikle g\u00fcvenlik a\u00e7\u0131klar\u0131na yol a\u00e7ar.<\/p>\n<pre><code class=\"language-javascript\">\/\/ DOMPurify ile sanitizasyon \u00f6rne\u011fi\n    \/\/ let temizlenmisHTML = DOMPurify.sanitize(kullaniciGirdisi);\n    \/\/ document.getElementById('yorumAlani').innerHTML = temizlenmisHTML;<\/code><\/pre>\n<p>3.  <strong><code>innerText<\/code> veya <code>textContent<\/code> Kullan\u0131n:<\/strong> E\u011fer sadece metin i\u00e7eri\u011fi g\u00f6stermeniz gerekiyorsa, <code>innerText<\/code> veya <code>textContent<\/code> kullan\u0131n. Bu \u00f6zellikler HTML etiketlerini otomatik olarak ka\u00e7\u0131rd\u0131\u011f\u0131 i\u00e7in XSS'e kar\u015f\u0131 do\u011fal olarak g\u00fcvenlidir.<br \/>\n4.  <strong>DOM API'lerini Kullan\u0131n:<\/strong> Yeni elementler olu\u015fturmak i\u00e7in <code>document.createElement()<\/code>, metin d\u00fc\u011f\u00fcmleri i\u00e7in <code>document.createTextNode()<\/code> ve bunlar\u0131 DOM'a eklemek i\u00e7in <code>appendChild()<\/code> veya <code>insertBefore()<\/code> gibi y\u00f6ntemleri kullanmak, <code>innerHTML<\/code>'den daha g\u00fcvenli ve genellikle daha performansl\u0131 bir yakla\u015f\u0131md\u0131r (\u00f6zellikle k\u00fc\u00e7\u00fck, par\u00e7al\u0131 eklemeler i\u00e7in).<\/p>\n<pre><code class=\"language-javascript\">let guvenliMetin = \"<strong>Merhaba<\/strong> D\u00fcnya!\";\nlet p = document.createElement('p');\nlet strong = document.createElement('strong');\nstrong.textContent = \"Merhaba\"; \/\/ textContent veya innerText kullan\u0131n\np.appendChild(strong);\np.appendChild(document.createTextNode(\" D\u00fcnya!\"));\ndocument.getElementById('guvenliAlan').appendChild(p);\n\/\/ Bu yakla\u015f\u0131m, HTML'i manuel olarak olu\u015fturup metni g\u00fcvenli bir \u015fekilde ekler.<\/code><\/pre>\n<h3>Performans M\u00fclahazalar\u0131<\/h3>\n<p>DOM manip\u00fclasyonu, taray\u0131c\u0131n\u0131n en pahal\u0131 i\u015flemlerinden biri olabilir. Her DOM de\u011fi\u015fikli\u011fi, taray\u0131c\u0131n\u0131n sayfan\u0131n d\u00fczenini yeniden hesaplamas\u0131na (reflow\/layout) ve\/veya yeniden \u00e7izmesine (repaint) neden olabilir. Bu i\u015flemler, \u00f6zellikle b\u00fcy\u00fck veya karma\u015f\u0131k sayfalarda, kullan\u0131c\u0131n\u0131n alg\u0131lad\u0131\u011f\u0131 performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde etkileyebilir.<\/p>\n<p>*   <strong><code>innerText<\/code> ve Reflow\/Repaint:<\/strong> <code>innerText<\/code> de\u011feri al\u0131n\u0131rken veya ayarlan\u0131rken, taray\u0131c\u0131 elementin ve alt elementlerinin hesaplanm\u0131\u015f stilini dikkate almak zorundad\u0131r. Bu, bir reflow ve repaint i\u015flemini tetikleyebilir. S\u0131k s\u0131k <code>innerText<\/code> okuma veya yazma i\u015flemleri, \u00f6zellikle d\u00f6ng\u00fcler i\u00e7inde yap\u0131ld\u0131\u011f\u0131nda, ciddi performans sorunlar\u0131na yol a\u00e7abilir.<br \/>\n*   <strong><code>innerHTML<\/code> ve Ayr\u0131\u015ft\u0131rma Maliyeti:<\/strong> <code>innerHTML<\/code>'e bir dize atand\u0131\u011f\u0131nda, taray\u0131c\u0131 bu dizeyi HTML olarak ayr\u0131\u015ft\u0131r\u0131r, t\u00fcm mevcut \u00e7ocuk d\u00fc\u011f\u00fcmlerini kald\u0131r\u0131r ve yeni d\u00fc\u011f\u00fcmleri olu\u015fturur. Bu i\u015flem, atanan HTML dizesinin b\u00fcy\u00fckl\u00fc\u011f\u00fcne ve karma\u015f\u0131kl\u0131\u011f\u0131na ba\u011fl\u0131 olarak maliyetli olabilir. E\u011fer <code>innerHTML += ...<\/code> gibi bir yap\u0131yla s\u00fcrekli ekleme yap\u0131l\u0131yorsa, her seferinde t\u00fcm elementin i\u00e7eri\u011fi yeniden ayr\u0131\u015ft\u0131r\u0131l\u0131p olu\u015fturuldu\u011fu i\u00e7in performans \u00e7ok d\u00fc\u015fer.<\/p>\n<h4>Performans \u0130pu\u00e7lar\u0131:<\/h4>\n<p>1.  <strong>Manip\u00fclasyonlar\u0131 Gruplay\u0131n:<\/strong> DOM manip\u00fclasyonlar\u0131n\u0131 m\u00fcmk\u00fcn oldu\u011funca tek bir toplu i\u015flemde yap\u0131n. \u00d6rne\u011fin, bir d\u00f6ng\u00fc i\u00e7inde her \u00f6\u011fe i\u00e7in ayr\u0131 ayr\u0131 DOM'u g\u00fcncellemek yerine, t\u00fcm de\u011fi\u015fiklikleri haf\u0131zada olu\u015fturup tek seferde DOM'a ekleyin.<br \/>\n2.  <strong><code>DocumentFragment<\/code> Kullan\u0131n:<\/strong> Birden fazla DOM d\u00fc\u011f\u00fcm\u00fc olu\u015fturup bunlar\u0131 tek seferde DOM'a eklemek i\u00e7in <code>DocumentFragment<\/code> kullan\u0131n. Bu, her bir d\u00fc\u011f\u00fcm eklemede reflow\/repaint tetiklenmesini \u00f6nler.<\/p>\n<pre><code class=\"language-javascript\">let fragment = document.createDocumentFragment();\n    for (let i = 0; i < 100; i++) {\n        let li = document.createElement('li');\n        li.textContent = <code>\u00d6\u011fe ${i + 1}<\/code>;\n        fragment.appendChild(li);\n    }\n    document.getElementById('buyukListe').appendChild(fragment); \/\/ Tek bir reflow\/repaint<\/code><\/pre>\n<p>3.  <strong>Elementi DOM'dan Ay\u0131r\u0131n:<\/strong> B\u00fcy\u00fck DOM manip\u00fclasyonlar\u0131 yapmadan \u00f6nce, ilgili elementi DOM'dan ge\u00e7ici olarak kald\u0131r\u0131n, de\u011fi\u015fiklikleri yap\u0131n ve sonra tekrar ekleyin.<\/p>\n<pre><code class=\"language-javascript\">let liste = document.getElementById('liste');\n    let ebeveyn = liste.parentNode;\n    ebeveyn.removeChild(liste); \/\/ DOM'dan kald\u0131r\n    \/\/ B\u00fcy\u00fck de\u011fi\u015fiklikler yap\u0131n (\u00f6rne\u011fin, innerHTML ile)\n    liste.innerHTML = '... yeni ve b\u00fcy\u00fck i\u00e7erik ...';\n    ebeveyn.appendChild(liste); \/\/ DOM'a geri ekle<\/code><\/pre>\n<p>4.  <strong><code>textContent<\/code> Kullan\u0131n (Metin \u0130\u00e7in):<\/strong> E\u011fer sadece metin i\u00e7eri\u011fiyle \u00e7al\u0131\u015f\u0131yorsan\u0131z ve <code>innerText<\/code>'in stil hesaplama davran\u0131\u015f\u0131na ihtiyac\u0131n\u0131z yoksa, <code>textContent<\/code> genellikle daha performansl\u0131 bir alternatiftir \u00e7\u00fcnk\u00fc stil hesaplamalar\u0131n\u0131 tetiklemez ve gizli i\u00e7eri\u011fi de d\u00f6nd\u00fcr\u00fcr.<\/p>\n<h3>Alternatif Yakla\u015f\u0131mlar<\/h3>\n<p><code>innerText<\/code> ve <code>innerHTML<\/code> g\u00fc\u00e7l\u00fc ara\u00e7lar olsa da, bazen daha spesifik veya performansl\u0131 alternatiflere ihtiya\u00e7 duyulabilir.<\/p>\n<p>*   <strong><code>textContent<\/code>:<\/strong> <code>innerText<\/code>'e benzer \u015fekilde, bir elementin metin i\u00e7eri\u011fini d\u00f6nd\u00fcr\u00fcr veya ayarlar. Ancak <code>innerText<\/code>'ten farkl\u0131 olarak:<br \/>\n    *   Stil hesaplamas\u0131 yapmaz, bu nedenle genellikle daha performansl\u0131d\u0131r.<br \/>\n    *   CSS ile gizlenmi\u015f i\u00e7eri\u011fi de d\u00f6nd\u00fcr\u00fcr.<br \/>\n    *   HTML etiketlerini ka\u00e7\u0131r\u0131r (metin olarak i\u015fler), dolay\u0131s\u0131yla XSS'e kar\u015f\u0131 g\u00fcvenlidir.<br \/>\n    *   \u00c7o\u011fu durumda <code>innerText<\/code> yerine <code>textContent<\/code> kullanmak daha iyi bir performans ve g\u00fcvenlik dengesi sa\u011flayabilir, \u00f6zellikle sadece metin i\u00e7eri\u011fiyle ilgileniyorsan\u0131z.<\/p>\n<pre><code class=\"language-javascript\">\/\/ HTML: <p id=\"deneme\"><span style=\"display:none;\">Gizli<\/span> G\u00f6r\u00fcn\u00fcr<\/p>\n    let p = document.getElementById('deneme');\n    console.log(p.innerText);   \/\/ \"G\u00f6r\u00fcn\u00fcr\"\n    console.log(p.textContent); \/\/ \"Gizli G\u00f6r\u00fcn\u00fcr\" (daha h\u0131zl\u0131)<\/code><\/pre>\n<p>*   <strong><code>insertAdjacentHTML()<\/code>:<\/strong> Mevcut i\u00e7eri\u011fi tamamen silmeden, bir elementin belirli bir konumuna HTML eklemenizi sa\u011flar. Bu, <code>innerHTML += ...<\/code> yakla\u015f\u0131m\u0131n\u0131n performans sorunlar\u0131n\u0131 a\u015fmak i\u00e7in daha iyi bir yoldur.<br \/>\n    <code>element.insertAdjacentHTML(position, text)<\/code><br \/>\n    <code>position<\/code> de\u011ferleri: 'beforebegin', 'afterbegin', 'beforeend', 'afterend'.<\/p>\n<pre><code class=\"language-javascript\">\/\/ HTML: <ul id=\"liste\"><li>Mevcut \u00d6\u011fe<\/li><\/ul>\n    let liste = document.getElementById('liste');\n    liste.insertAdjacentHTML('beforeend', '<li>Yeni \u00d6\u011fe (sona ekle)<\/li>');\n    liste.insertAdjacentHTML('afterbegin', '<li>Yeni \u00d6\u011fe (ba\u015fa ekle)<\/li>');\n    \/\/ Art\u0131k liste: <ul><li>Yeni \u00d6\u011fe (ba\u015fa ekle)<\/li><li>Mevcut \u00d6\u011fe<\/li><li>Yeni \u00d6\u011fe (sona ekle)<\/li><\/ul><\/code><\/pre>\n<p>*   <strong>DOM API'leri (<code>createElement<\/code>, <code>appendChild<\/code>, <code>createTextNode<\/code>):<\/strong> En d\u00fc\u015f\u00fck seviyeli ve en kontrol edilebilir DOM manip\u00fclasyon y\u00f6ntemidir. Her bir d\u00fc\u011f\u00fcm\u00fc ayr\u0131 ayr\u0131 olu\u015fturup DOM a\u011fac\u0131na eklemenizi sa\u011flar. Bu y\u00f6ntem, \u00f6zellikle k\u00fc\u00e7\u00fck, par\u00e7al\u0131 de\u011fi\u015fiklikler veya y\u00fcksek performans gerektiren durumlarda <code>DocumentFragment<\/code> ile birlikte kullan\u0131ld\u0131\u011f\u0131nda \u00e7ok etkilidir. Ayr\u0131ca, g\u00fcvenlik a\u00e7\u0131s\u0131ndan da en g\u00fcvenli y\u00f6ntemdir \u00e7\u00fcnk\u00fc HTML ayr\u0131\u015ft\u0131rmas\u0131 yapmazs\u0131n\u0131z.<\/p>\n<pre><code class=\"language-javascript\">let yeniDiv = document.createElement('div');\n    yeniDiv.id = 'yeniElement';\n    let yeniMetin = document.createTextNode('Bu, createElement ile olu\u015fturuldu.');\n    yeniDiv.appendChild(yeniMetin);\n    document.body.appendChild(yeniDiv);<\/code><\/pre>\n<h3>Sonu\u00e7<\/h3>\n<p><code>innerText<\/code> ve <code>innerHTML<\/code>, JavaScript'te DOM manip\u00fclasyonu i\u00e7in g\u00fc\u00e7l\u00fc ve yayg\u0131n olarak kullan\u0131lan iki \u00f6zelliktir. Her ikisi de bir elementin i\u00e7eri\u011fini okuma ve de\u011fi\u015ftirme yetene\u011fi sunsa da, \u00e7al\u0131\u015fma \u015fekilleri, g\u00fcvenlik etkileri ve performans karakteristikleri a\u00e7\u0131s\u0131ndan \u00f6nemli farkl\u0131l\u0131klar g\u00f6sterirler.<\/p>\n<p><code>innerText<\/code>, yaln\u0131zca metin i\u00e7eri\u011fiyle ilgilenen, g\u00fcvenlik odakl\u0131 ve kullan\u0131c\u0131n\u0131n g\u00f6rd\u00fc\u011f\u00fc metni yans\u0131tan durumlarda tercih edilmelidir. XSS sald\u0131r\u0131lar\u0131na kar\u015f\u0131 do\u011fal bir koruma sa\u011flar ve metin g\u00f6r\u00fcnt\u00fcleme i\u00e7in basittir. Ancak, stil hesaplamalar\u0131 nedeniyle performans maliyetleri olabilir.<\/p>\n<p><code>innerHTML<\/code>, zengin HTML i\u00e7eri\u011fini dinamik olarak olu\u015fturman\u0131z veya de\u011fi\u015ftirmeniz gerekti\u011finde vazge\u00e7ilmezdir. Karma\u015f\u0131k DOM yap\u0131lar\u0131n\u0131 h\u0131zl\u0131ca olu\u015fturabilir. Ancak, en b\u00fcy\u00fck dezavantaj\u0131 XSS g\u00fcvenlik a\u00e7\u0131\u011f\u0131 riskidir. G\u00fcvenilmeyen kaynaklardan gelen verilerle kullan\u0131ld\u0131\u011f\u0131nda, dikkatli sanitizasyon veya alternatif DOM API'leri kullan\u0131lmal\u0131d\u0131r.<\/p>\n<p>Do\u011fru arac\u0131 do\u011fru senaryoda kullanmak, uygulaman\u0131z\u0131n hem g\u00fcvenli hem de performansl\u0131 olmas\u0131n\u0131 sa\u011flar. Metin i\u00e7in genellikle <code>textContent<\/code> veya <code>innerText<\/code> (g\u00f6r\u00fcn\u00fcrl\u00fck \u00f6nemliyse), zengin HTML i\u00e7in ise <code>innerHTML<\/code> (g\u00fcvenilir kaynaklardan gelen verilerle) veya <code>insertAdjacentHTML<\/code> (eklemeler i\u00e7in) tercih edilmelidir. B\u00fcy\u00fck ve karma\u015f\u0131k manip\u00fclasyonlar i\u00e7in <code>DocumentFragment<\/code> ile birlikte DOM API'lerini kullanmak en g\u00fcvenli ve performansl\u0131 yakla\u015f\u0131md\u0131r. Her zaman g\u00fcvenlik ve performans m\u00fclahazalar\u0131n\u0131 \u00f6n planda tutarak bilin\u00e7li se\u00e7imler yapmak, sa\u011flam ve s\u00fcrd\u00fcr\u00fclebilir web uygulamalar\u0131 geli\u015ftirmenin anahtar\u0131d\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"JavaScript&#8217;te innerText ve innerHTML Kullanarak DOM Manip\u00fclasyonu\nWeb sayfalar\u0131, kullan\u0131c\u0131larla etkile\u015fim kuran dinamik yap\u0131lar haline geldik\u00e7","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[129],"tags":[],"class_list":{"0":"post-32704","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-javascript","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JavaScript&#039;te innerText ve innerHTML Kullanarak DOM Manip\u00fclasyonu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript&#039;te innerText ve innerHTML Kullanarak DOM Manip\u00fclasyonu\" \/>\n<meta property=\"og:description\" content=\"JavaScript&#039;te innerText ve innerHTML Kullanarak DOM Manip\u00fclasyonu Web sayfalar\u0131, kullan\u0131c\u0131larla etkile\u015fim kuran dinamik yap\u0131lar haline geldik\u00e7\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-24T22:40:54+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"JavaScript&#8217;te innerText ve innerHTML Kullanarak DOM Manip\u00fclasyonu\",\"datePublished\":\"2025-10-24T22:40:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/\"},\"wordCount\":3074,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Javascript\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/\",\"name\":\"JavaScript'te innerText ve innerHTML Kullanarak DOM Manip\u00fclasyonu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-24T22:40:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript&#8217;te innerText ve innerHTML Kullanarak DOM Manip\u00fclasyonu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"JavaScript'te innerText ve innerHTML Kullanarak DOM Manip\u00fclasyonu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/","og_locale":"tr_TR","og_type":"article","og_title":"JavaScript'te innerText ve innerHTML Kullanarak DOM Manip\u00fclasyonu","og_description":"JavaScript'te innerText ve innerHTML Kullanarak DOM Manip\u00fclasyonu Web sayfalar\u0131, kullan\u0131c\u0131larla etkile\u015fim kuran dinamik yap\u0131lar haline geldik\u00e7","og_url":"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-24T22:40:54+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"JavaScript&#8217;te innerText ve innerHTML Kullanarak DOM Manip\u00fclasyonu","datePublished":"2025-10-24T22:40:54+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/"},"wordCount":3074,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Javascript"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/","url":"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/","name":"JavaScript'te innerText ve innerHTML Kullanarak DOM Manip\u00fclasyonu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-24T22:40:54+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-innertext-ve-innerhtml-kullanarak-dom-manipulasyonu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JavaScript&#8217;te innerText ve innerHTML Kullanarak DOM Manip\u00fclasyonu"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32704","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32704"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32704\/revisions"}],"predecessor-version":[{"id":32705,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32704\/revisions\/32705"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32704"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32704"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32704"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}