0

首先,我是 JavaScript 新手。我正在使用aloha编辑器。我想div通过为每个div. 使用该 id 我必须调用一个方法,这就是aloha方法。一切正常,但该aloha方法没有得到 id。在浏览器上,我得到一个空白空间而不是一个 aloha 框。

这是我的代码..

javascript

     var screen=document.getElementById('addScreens');
     num_q=document.getElementById('numquest').value;

     for(i=0;i<num_q;i++) {   
         div1=document.createElement("div");
         div1.id="multicolumn";
         screen.appendChild(div1);
     }

     //aloha
     $(document).ready(function() {
         $('#multicolumn').aloha(); //multicolumn is not defined
     });

**HTML**

<html>
<body>
 <br><input type="text" name = "numquest" id ="numquest" value="" size="5" style="" disabled>
     <input type="button" value="submit" onclick="getFields();">
<div id="addScreens"> <br> </div>
</body>
</html>

<style type="text/css">

            #multicolumn {

                -webkit-column-width:300px;
                -webkit-column-gap:30px;
                -moz-column-width:300px;
                -moz-column-gap:30px;
                column-width:100px;
                column-gap:30px;
                      width:550px;
                height: 150px;
                margin: 0 auto;
                      overflow-x: auto;
                      overflow-y: auto;
                   }

            </style>

那么,如何让动态创建的 iddiv随处可访问?提前感谢您的任何想法。

4

2 回答 2

1

您可以在 $document ready 中创建 div,然后在其上调用 aloha。请参阅以下代码以获取动态 id 生成

 //aloha
    $(document).ready(function() {
         var screen=document.getElementById('addScreens');
         var num_q=document.getElementById('numquest').value;
         for(i=0;i<num_q;i++)
         {   
            var div1=document.createElement("div");
            div1.id = "multicolumn_" + i;
            screen.appendChild(div1);
            $('#' + div1.id).aloha(); 
         }
         //multicolumn is not defined
    });
于 2013-12-05T05:55:27.420 回答
1

从您共享的代码中,根本不会创建多列 div,因为您的输入字段的值永远不会设置为数值。在您的代码中考虑这一行

<input type="text" name = "numquest" id ="numquest" value="" size="5" style="" disabled>

并在 JS 中调用这一行

num_q=document.getElementById('numquest').value;

将导致num_q评估为空字符串。因此你的循环不会有任何影响。您可以尝试为您的输入提供一个默认值,并通过以下方式访问其值:

<input type="text" name = "numquest" id ="numquest" value="1" size="5" style="" disabled>
//JS
num_q= parseInt(document.getElementById('numquest').value, 10);

最重要的是,我必须同意 Saravana 的观点,将所有内容都放入$(document).ready函数中是一种更好的方法。

于 2013-12-05T06:03:08.773 回答