2013-05-09 34 views
0

我在接收来自JavaScript脚本的8个以上值时出现问题...它应该自动填充下拉选项(select)上的字段,但它确实工作正常,但我无法获得超过8个值...问题在哪里?谢谢!javascript中的变量,自动填充表格

<script type="text/javascript"> 
    // Format of StoreDetails() 
    // Name,Addr1,Addr2,Addr3,Phone,FAX,Email,Webpage, Url 
    var StoreDetails = [ 
     ['Please select','','','','','','','',''], 
     ['Please select','test1','test2','test3','test4','test5','test6','test7','test8'] 
     // Note: no comma 
    ]; 
    function Setup(TA) { 
     var str = "<select id='Store' class='styled-select' onchange='StoreInfo()'>"; 
     for (var i=0; i<StoreDetails.length; i++) { 
      str += '<option value="'+StoreDetails[i].join('|')+'">'+StoreDetails[i] [0]+'</option>'; 
     } 
     str +='</select>'; 
     document.write(str); 
    } 
    function StoreInfo() { 
     var sel = document.getElementById('Store').selectedIndex; 
     var tmp = []; tmp.push(sel); 
     for (var i=1; i<8; i++) { 
      tmp.push(StoreDetails[sel][i]); 
     } 
     document.getElementById('txtName').value = tmp[1]; 
     document.getElementById('txtAddr1').value = tmp[2]; 
     document.getElementById('txtAddr2').value = tmp[3]; 
     document.getElementById('txtAddr3').value = tmp[4]; 
     document.getElementById('txtPhone').value = tmp[5]; 
     document.getElementById('txtPhone2').value = tmp[6]; 
     document.getElementById('txtEmail').value = tmp[7]; 
     document.getElementById('txtWebpage').value = tmp[8]; 
     document.getElementById('txtUrl').value = tmp[9]; 
    } 
</script> 
</head> 
<body> 
    <div class="container">  
     <header class="clearfix">    
      <img src="logo.png"/> 
      <nav class="codrops-demos"> 
      <a class="current-demo" href="index.php">Some text</a> 
      </nav>     
     </header> 
     <section class="main clearfix"> 
      <div class="fleft"> 
       <p>Da bi porucili vizit karte, izaberite ime i kolicinu, zatim potvrdite.</p> 
      </div> 
      <div class="fleft"> 
      <form id="testconfirmJQ" name="testconfirmJQ" method="post" action="output.php"> 
<script type="text/javascript">Setup();</script> 
    <table border="0"> 
     <input type="text" hidden="hidden" id="txtName" name="txtName" size="30" value=""> </td></tr> 
     <input type="text" hidden="hidden" id="txtAddr1" name="txtAddr1" size="30" value=""> </td></tr> 
     <input type="text" hidden="hidden" id="txtAddr2" name="txtAddr2" size="30" value=""></td></tr> 
     <input type="text" hidden="hidden" id="txtAddr3" name="txtAddr3" size="30" value=""> </td></tr> 
     <input type="text" hidden="hidden" id="txtPhone" name="txtAddr3" size="30" value=""> </td></tr> 
     <input type="text" hidden="hidden" id="txtPhone2" name="txtPhone2" size="30" value=""></td></tr> 
     <input type="text" hidden="hidden" id="txtEmail" name="txtEmail" size="30" value=""> </td></tr> 
     <input type="text" hidden="hidden" id="txtUrl" name="txtUrl" size="30" value=""></td> </tr> 
    <tr><td>How much?:</td><td><input type="text" id="kolicina" name="kolicina" size="5" value=""></td></tr> 
    <tr><td><input id="submitJQ" name="submitJQ" type="submit" class="styled-button-1" value="Confirm" /></td></tr> 
    </table> 
</form> 
+1

你能不能至少正确缩进代码??? – PeeHaa 2013-05-09 12:42:42

+1

'(var i = 1; i <8; i ++)'因为这个...... – RaphaelDDL 2013-05-09 12:43:43

+0

你可以制作一个http://jsfiddle.net/,因为它不起作用吗?顺便说一下你的html无效。 – slinky2000 2013-05-09 14:01:33

回答

2

你限制在for循环(从i = 1i < 8)的tmp大小。有几个变化:

var StoreDetails = [ 
    ['A store','test1','test2','test3','test4','test5','test6','test7','test8','url'] 
    // Note: no comma 
]; 

function Setup() { 
    var str = "<select id='Store' class='styled-select' onchange='StoreInfo()'>"; 

    str += '<option disabled="disabled" selected="selected">Please Select</option>'; 

    for (var i=0; i<StoreDetails.length; i++) { 
     str += '<option value="'+StoreDetails[i].join('|')+'">'+StoreDetails[i] [0]+'</option>'; 
    } 

    str +='</select>'; 

    document.write(str); 
} 

function StoreInfo() { 
    var sel = document.getElementById('Store').value; 

    var values = sel.split("|"); 

    document.getElementById('txtName').value = values[1]; 
    document.getElementById('txtAddr1').value = values[2]; 
    document.getElementById('txtAddr2').value = values[3]; 
    document.getElementById('txtAddr3').value = values[4]; 
    document.getElementById('txtPhone').value = values[5]; 
    document.getElementById('txtPhone2').value = values[6]; 
    document.getElementById('txtEmail').value = values[7]; 
    document.getElementById('txtWebpage').value = values[8]; 
    document.getElementById('txtUrl').value = values[9]; 
} 

Setup(); 

...和形式:

<form> 
    <input id="txtName" /> 
    <input id="txtAddr1" /> 
    <input id="txtAddr2" /> 
    <input id="txtAddr3" /> 
    <input id="txtPhone" /> 
    <input id="txtPhone2" /> 
    <input id="txtEmail" /> 
    <input id="txtWebpage" /> 
    <input id="txtUrl" /> 
</form> 

此代码is working in my environment

+0

我试图将该值增加到9或10,但实际上并没有发生... – 2013-05-09 13:12:19

+0

更新后的代码正在为我工​​作 - 我认为问题的一部分是,StoreDetails字符串中只有8个变量订单项的名称:) – jterry 2013-05-09 13:50:42

+0

Joe Terry,你介意分享表单吗?由于某种原因,它仍然不适合我,我已经尝试了一切。谢谢。 – 2013-05-09 13:57:09

0

8日VAR

document.getElementById('txtWebpage').value = values[8]; 

但没有所谓的 “txtWebpage” 元素使的时候它获取到:

document.getElementById('txtUrl').value = values[9]; 

这是不确定的。

而且不是使用值8来算与我会用:

StoreDetails[sel].length 
+0

只是一个关于这个问题的问题,也可能有人帮助。我试图改变div的内容(我有一个模式弹出,它有背景图像,我希望它改变每个选择的下拉列表),是否有可能以某种方式与我使用这个脚本?再次感谢提前。 – 2013-05-09 14:19:38

+0

不相关,但内部的变化功能把这样的东西document.getElementById('modalId')。className =“newBackgroundImageCssClass” – slinky2000 2013-05-09 14:27:21

+0

你介意帮助我吗?我已经解决了这个问题,我应该开一个新的讨论还是...?我正在努力学习,谢谢!:) – 2013-05-09 14:34:26