Proč je moje Javascript a jQuery skriptování nefunguje?

hlasů
2

Díval jsem se na další otázku, a viděl, že bylo řečeno, když jejich Javascript nepracovala, aby funkci, která začala na načítání stránky.

Snažil jsem se použít tento kód: (no, ne přesně tento kód, ale něco podobného)

<!DOCTYPE html>
<html>
    <head>
        <script src=https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js></script>
        <script type=text/javascript charset=utf-8>
function doThisWhenLoaded(){
    var code = document.getElementsByTagName(body);
    code.append(<p>Yes it did.</p>);
}
        </script>
    </head>
    <body onload=doThisWhenLoaded>
        <h1 style=font-family:sans-serif;>Did it work?</h1>
    </body>
</html>

A nic se nestalo. Vše, co to udělali, bylo ukázat h1 kód, který jsem tam dal.

Položena 27/11/2018 v 18:01
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
2

Vzhledem k tomu, že jste již včetně jQuery zkusit

<!DOCTYPE html>
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script type="text/javascript" charset="utf-8">
$(document).ready(function(){
    var code = $("body");
    code.append("<p>Yes it did.</p>");
});
        </script>
    </head>
    <body >
        <h1 style="font-family:sans-serif;">Did it work?</h1>
    </body>
</html>

Odpovězeno 27/11/2018 v 18:05
zdroj uživatelem

hlasů
2

Zapomněli jste zahrnout závorky volat funkci v bodyelementu onloadatribut:

<!DOCTYPE html>
<html>

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script type="text/javascript" charset="utf-8">
    function doThisWhenLoaded() {
      //Modified the two lines below slightly
      var code = document.querySelector("body");
      code.innerHTML += "<p>Yes it did.</p>";
    }
  </script>
</head>

<body onload="doThisWhenLoaded()">
  <h1 style="font-family:sans-serif;">Did it work?</h1>
</body>

</html>

Lepší / čistší způsob, jak dosáhnout totéž by bylo použít addEventListenera DOMContentLoadedevent. Něco jako níže:

document.addEventListener("DOMContentLoaded", appendHtml.call(null, {
  selector: 'body',
  html: '<p>Yes it did.</p>'
}));

function appendHtml(config) {
  document.querySelector(config.selector).innerHTML += config.html;
}
<h1 style="font-family:sans-serif;">Did it work?</h1>

Odpovězeno 27/11/2018 v 18:04
zdroj uživatelem

hlasů
1

Dva z důvodů, proč to nefunguje:

  • Vyberte bodybudete muset použít document.body, nebo $("body")(v jQuery)
  • A jste zapomněli přidat závorky do svého volání funkce doThisWhenLoaded()

Zde je kód opravil:

<!DOCTYPE html>
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script type="text/javascript" charset="utf-8">
function doThisWhenLoaded(){
    $("body").append("<p>Yes it did.</p>");
}
        </script>
    </head>
    <body onload="doThisWhenLoaded()">
        <h1 style="font-family:sans-serif;">Did it work?</h1>
    </body>
</html>

Odpovězeno 27/11/2018 v 18:05
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more