2017-07-29 67 views
0

我正在學習Javascript,我看到輸出代碼的首選方法是document.getElementById ...和Document.write應該只用於測試...輸出Javascript的最佳方法是什麼?

這是輸出任何腳本的最佳方式?代碼究竟在做什麼?我寫了下面的代碼,我不知道「演示」如何發揮作用,爲什麼它是必要的...

<html> 
    <head> 
     <script> 

      function addNumbers(arr){ 
       var i, answer =0; 

       for(i=0; i<arr.length; i++){ 
        answer += arr[i]; 

       } 
       return answer; 
      } 

     </script> 
    </head> 

    <body> 

     <h4> Function addNumbers: </h4> 

     <p id="demo"></p> 

     <script> 

      var myArray = [1,2,3,4,5,6,7,8,9]; 
      document.getElementById("demo").innerHTML = addNumbers(myArray); 

     </script> 

    </body> 
</html> 
+1

爲什麼你想要在DOM中顯示你的代碼結果(特別是當你在做數組操作時)?控制檯是爲它製作的。 –

+0

@Kinduser它是一個類,我需要顯示函數>。< –

+0

@AntoineB只是'console.log'它。這正是它的目的。 – Carcigenicate

回答

0

退一萬步,進兩步:

document.write是一組三個功能

  • document.open()之一打開文檔從頭開始寫,刪除現有的文檔內容,如果有的話。
  • document.write(string)將字符串插入到用於構建網頁的字符流中。
  • document.close()關閉寫入文件。任何進一步的寫入都會重新打開文檔並清除過程中的現有內容。

現在考慮

  1. 在頁面輸入流的末尾,該文件將自動關閉。
  2. 文檔是使用「文檔對象模型」(「DOM」)構建的,可以從腳本中訪問和操作文檔。
  3. document.open/write/close在DOM被標準化並可用之前發起。

所以document.write在現代網絡編程中幾乎沒有用處。如果在頁面加載完成後使用,則會將頁面擦除。它幾乎完全限於尚未學習DOM的學生的教程,偶爾以編程方式編寫用window.open打開的子窗口的內容。

頁面中的所有HTML元素都以DOM中的HTML元素節點的形式存在。這些可以通過調用方法(如document.getElementByIddocument.querySelector)訪問,並作爲JavaScript對象值返回。 HTMLElements因標籤類型而異,但如果它們代表HTML容器元素,則具有諸如innerHTMLtextContent之類的屬性,如果使用腳本中的文本字符串進行更新,則會更改呈現的頁面的內容。

在回答你的問題時,「demo」是HTMLParagraphElement的id值,其中id值用於訪問DOM中的特定元素 - id值在頁面HTMLElements中應該是唯一的。

(段落)元素對象是通過使用document.getElementById查詢DOM獲得的。隨後更改元素內容innerHTML會導致文檔被重新渲染爲新內容,從而更新頁面的顯示。

+0

非常感謝你的回答。我正在採用的類是HTML/CSS/JS的基本入門級,現在它有道理爲什麼他們要求我們使用document.write ..謝謝 –

-1

您的代碼運行得很好。看看下面。我在這裏沒有看到任何問題。如果你想在帶有演示ID的元素內的頁面上顯示結果,那麼它的工作很好,這是做到這一點。如果你想在控制檯上打印你的值,那麼console.log是正確的方法。在你的代碼中聲明這個數組var myArray = [1,2,3,4,5,6,7,8,9];之後,只需將該函數傳遞給console.log(addNumbers(myArray))即可。

<html> 
 
    <head> 
 
     <script> 
 

 
      function addNumbers(arr){ 
 
       var i, answer =0; 
 

 
       for(i=0; i<arr.length; i++){ 
 
        answer += arr[i]; 
 

 
       } 
 
       return answer; 
 
      } 
 

 
     </script> 
 
    </head> 
 

 
    <body> 
 

 
     <h4> Function addNumbers: </h4> 
 

 
     <p id="demo"></p> 
 

 
     <script> 
 

 
      var myArray = [1,2,3,4,5,6,7,8,9]; 
 
      document.getElementById("demo").innerHTML = addNumbers(myArray); 
 

 
     </script> 
 

 
    </body> 
 
</html>

+0

這完全錯過了這個問題。他沒有任何地方說代碼被破壞。另外,如果你只是複製他的代碼,那不是一個答案。 – Carcigenicate

+0

我發佈了它,以便他可以使用「運行代碼段」按鈕運行它。無論如何,我以爲我在幫忙。 –

+0

下次我會更好地嘗試一個垃圾。我知道它非常關鍵的社區。 –

0

演示指的是ID爲 「演示」 的段落。您可以使用ids(在HTML頁面中必須是唯一的)在JavaScript中識別和使用html標記。

document.write確實不再經常使用。有多種原因。由於它在網上很好的解釋,看看these answers或者這個article

如果您添加一些缺失的標籤,如</head><body><script>,並且控制檯日誌正在發生,那麼您的代碼正常工作。在下面的代碼片段中運行。

作爲一個側音,現在更好的做法是在關閉</body>標籤之前做好JavaScript的工作並加載到頁面底部。由於任何加載發生在DOM加載後。

function addNumbers(arr) { 
 
    var i, answer = 0; 
 

 
    for (i = 0; i < arr.length; i++) { 
 
    answer += arr[i]; 
 

 
    } 
 
    return answer; 
 
} 
 

 
var myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 
 

 
document.getElementById("demo").innerHTML = addNumbers(myArray); 
 

 
console.log(addNumbers(myArray))
<html> 
 

 
<head> 
 

 
</head> 
 

 
<body> 
 

 
    <h4> Function addNumbers: </h4> 
 

 
    <p id="demo">This is a paragraph that can be identified using the id attribute.</p> 
 

 
</body> 
 

 
</html>

相關問題