如何在不使用document.writes的情况下在document.getelementById函数中编写for循环

时间:2019-05-09 15:46:13

标签: javascript optimization

我想在现代document.getElementById或更好的选择中从document.write样式更改代码,因为我想使用像这样的多对象数组

{kapitel:['Negation','second'], name: ["<span id='buch_mathematik_symb_kap_2_8'>...</span>",'second'], a_href:['symb_negation','dsa'], buch: ['Mathematik','ddd']},

,我想不出如何用document.getElementById('..')。innerHTML + = ....表单来解决这个问题。如果我在一个for循环中编写第二个for循环来解决该问题,则会收到som NaN错误,这不是很酷。有人为此提供提示或小例子吗?

let inhaltsverzeichnis_symbole_mathematik = [ 
  //{kapitel:'Negation', name:"<span id='buch_mathematik_symb_kap_2_8'>...</span>", a_href:'symb_negation', buch: 'Mathematik'},
  {kapitel:['Negation','second'], name: ["<span id='buch_mathematik_symb_kap_2_8'>...</span>",'second'], a_href:['symb_negation','dsa'], buch: ['Mathematik','ddd']},
  {kapitel:'Konjunktion', name:"<span id='buch_mathematik_symb_kap_2_11'>...</span>", a_href:'symb_konjunktion', buch: 'Mathematik'},
  {kapitel:'Disjunktion', name:"<span id='buch_mathematik_symb_kap_2_13'>...</span>", a_href:'symb_disjunktion', buch: 'Mathematik'},
  {kapitel:'Implikation/Subjunktion', name:"<span id='buch_mathematik_symb_kap_2_13_1'>...</span>", a_href:'symb_implikation', buch: 'Mathematik'},
  {kapitel:'Äquivalenz', name:"<span id='buch_mathematik_symb_kap_2_13_2'>...</span>", a_href:'symb_equivalence', buch: 'Mathematik'},
  {kapitel:'Nand', name:"<span id='buch_mathematik_symb_kap_2_13_5'>...</span>", a_href:'symb_nand', buch: 'Mathematik'},
  {kapitel:'Xor', name:"<span id='buch_mathematik_kap_symb_2_13_5_1'>...</span>", a_href:'symb_xor', buch: 'Mathematik'},
  {kapitel:'Teilbarkeit', name:"<span id='buch_mathematik_kap_symb_2_13_3'>...</span>", a_href:'symb_teilbarkeit', buch: 'Mathematik'},
]
let inhaltsverzeichnis_Beweisfuehrung_mathematik = [ 
  {kapitel:'2.1', name:'Beweisführung Rechtwinkeliges Dreieck', a_href:'bf_kapitel_2_1', buch: 'Mathematik'},
  {kapitel:'2.3', name:'Beweisführung direkter, indirekter und widersprüchlicher Beweis', a_href:'bf_kapitel_2_3', buch: 'Mathematik'},
]
    
let inhaltsverzeichnis_mathematik = [ 
  {kapitel:'1', name:'Bla Bla zu beginn', a_href:'Grundbegriffe_der_Immunologie', buch: 'Mathematik'},
  {kapitel:'1.1', name:'Über dieses Lehrbuch, Mathematiker und Mathematik', a_href:'zf_kapitel_1_1', buch: 'Mathematik'},
  {kapitel:'2.1', name:'Eine beweisende Wissenschaft', a_href:'zf_kapitel_2_1', buch: 'Mathematik'},
  {kapitel:'2.2', name:'Grundbegriffe der Aussagelogik', a_href:'zf_kapitel_2_2', buch: 'Mathematik'},
  {kapitel:'2.3', name:'Definition, Satz, Beweis', a_href:'zf_kapitel_2_3', buch: 'Mathematik'},
]    

document.write('<button class="buttn" onclick="myFunction(\'index\')" style="color:red;">Inhaltsverzeichnis</button><div id="index" style="display:none-;">');
document.write('<ul style="list-style: none;">');
document.write('<table><tr><td valign="top">');
<!-- Inhaltsverzeichnis buch_mathematik.js - Kapitel -->
for (NR_i = 0; NR_i < inhaltsverzeichnis_mathematik.length; NR_i++) {
  document.write(
    '<li>'
    +  '<table>'
    +    '<tr>'
    +      '<td style="width:30px">' 
    +        inhaltsverzeichnis_mathematik[NR_i].kapitel 
    +      '</td><td>'
    +        '<a href="#'
    +          inhaltsverzeichnis_mathematik[NR_i].a_href 
    +        '" >' 
    +          inhaltsverzeichnis_mathematik[NR_i].name 
    +        '</a>'
    +      '</td>'
    +    '</tr>'
    +  '</table>'
    +'</li>' 
  );
}
document.write('</td><td valign="top">');
<!-- Inhaltsverzeichnis buch_mathematik.js - Beweise -->
for (NR_i = 0; NR_i < inhaltsverzeichnis_Beweisfuehrung_mathematik.length; NR_i++) {
  document.write(
      '<li>'
    +   '<table>'
    +     '<tr>'
    +       '<td style="width:30px">' 
    +         inhaltsverzeichnis_Beweisfuehrung_mathematik[NR_i].kapitel 
    +       '</td><td>'
    +         '<a href="#'
    +           inhaltsverzeichnis_Beweisfuehrung_mathematik[NR_i].a_href 
    +         '" >' 
    +           inhaltsverzeichnis_Beweisfuehrung_mathematik[NR_i].name 
    +         '</a>'
    +       '</td>'
    +     '</tr>'
    +   '</table>'
    + '</li>' 
  );
}
document.write('</td><td valign="top">');
<!-- Inhaltsverzeichnis buch_mathematik.js - Symbole -->
for (NR_i = 0; NR_i < inhaltsverzeichnis_symbole_mathematik.length; NR_i++) {
  document.write(
    '<li>'
  +   '<table>'
  +     '<tr>'
  +       '<td style="width:30px">'
  +         inhaltsverzeichnis_symbole_mathematik[NR_i].name 
  +       '</td>'
  +       '<td>'
  +         '<a href="#'
  +           inhaltsverzeichnis_symbole_mathematik[NR_i].a_href 
  +         '" >' 
  +           inhaltsverzeichnis_symbole_mathematik[NR_i].kapitel 
  +         '</a>'
  +       '</td>'
  +     '</tr>'
  +   '</table>'
  + '</li>' 
  );
}			
document.write('</td></tr></table>');
document.write('</ul></div>');

1 个答案:

答案 0 :(得分:1)

对函数进行了一些优化:

function content(param,i){
 return `<li>
         <table>
          <tr>
            <td style="width:30px">
              ${param[i].name}
            </td>
            <td>
              <a href="#
                ${param[i].a_href}
               " > 
                 ${param[i].kapitel }.
               </a>
            </td>
           </tr>
         </table>
        </li> `;

 }  

 function createContent(obj){
    for (let i = 0; i < obj.length; i++) {
        document.write(content(obj,i));
    }
 }

 document.write('<button class="buttn" onclick="myFunction(\'index\')" style="color:red;">Inhaltsverzeichnis</button><div id="index" style="display:none-;">');
document.write('<ul style="list-style: none;">');
document.write('<table><tr><td valign="top">');
<!-- Inhaltsverzeichnis buch_mathematik.js - Kapitel -->

createContent(inhaltsverzeichnis_mathematik);//call function

document.write('</td><td valign="top">');
<!-- Inhaltsverzeichnis buch_mathematik.js - Beweise -->

createContent(inhaltsverzeichnis_Beweisfuehrung_mathematik);//call function

document.write('</td><td valign="top">');
<!-- Inhaltsverzeichnis buch_mathematik.js - Symbole -->

createContent(inhaltsverzeichnis_symbole_mathematik);//call function

document.write('</td></tr></table>');
document.write('</ul></div>');