既然Aweber已将装饰代码添加到他们的注册表单中,那么新手很难将字段数据提取到第二个脚本中。所以我设计了一个小格式,它接受“原始HTML”并输出字段名称/值。到目前为止,非常好。
<script language="javascript">
var o,a;
var c = document.getElementsByTagName('input');
for(var i = 0; i < c.length; i++) {
a = c[i].value;
o+='<tr><td>'+c[i].name+'</td>';
if (a !='') {
o+='< d>'+c[i].value+'</td></tr>';
} else {
o+='<td>-</td></tr>';
}
}
document.write('<hr><table width="500px" cellpadding="5" cellspacing="0" border="1" align="center">'+o+'</table>');
</script>
现在问题在于以下一行:
<input type="hidden" name="redirect" value="http://www.aweber.com/thankyou-coi.htm?m=text" id="redirect_2346...46e29de3d26"/>
我以为我可以使用上面的代码,但是使用getElementById()
代替getElementByTagName()
来查找行末尾的值,但所有这些都是一个空条目,并且我无法弄清楚原因。
+++
尝试模式匹配这个afternnon,并找到了一些有趣的东西。
我使用innerHTML将其加载到变量(t)中,然后尝试了一个警告。 原来的行是(比如说):
<input type="hidden" name="meta_web_form_id" value="7...36681" />
在警报中变为......
<input name="meta_web_form_id" value="7...36681" type="hidden">` ie "hidden moves to end. Weird??
然后我尝试了 - 明显的语法错误 -
var x=t.match(/id=\"[0-9a-z]\"/);
var x=t.match(/id=\"+[0-9a-z]+\"/);
var x=t.match(/id=\".[0-9a-z].\"/);
尝试从“id =”读到“长号末尾(改变其字母/数字组合)
我甚至尝试过indexOf('id =')来查找数字的START ...但是我找不到从那一点开始向前工作的方法来到达下一个(“)
+++++
我现在设法“弄乱”一个工作。我不认为Stackoverflow网站主机在这里发布整个 Aweber表单是公平的,因为它是基本的两个字段注册表单(!!)的7.5K,这要归功于他们所有的CSS表格'美化'表格。所以我采取了“innerHTML”看到的部分,并将其放在下面:
<form method="post" class="af-form-wrapper" action="http://www.aweber.com/scripts/addlead.pl" >
<div style="display: none;">
<input type="hidden" name="meta_web_form_id" value="7866...681" />
<input type="hidden" name="meta_split_id" value="" />
<input type="hidden" name="listname" value="lb-magic" />
<input type="hidden" name="redirect" value="http://www.aweber.com/thankyou-coi.htm?m=text" id="redirect_2346818daffbe9b...df846e29de3d26" />
<input type="hidden" name="meta_adtracking" value="basic_magic" />
<input type="hidden" name="meta_message" value="1" />
<input type="hidden" name="meta_required" value="name,email" />
<input type="hidden" name="meta_tooltip" value="" />
</div>
<div id="af-form-786636681" class="af-form"><div id="af-body-786636681" class="af-body af-standards">
<div class="af-element">
<label class="previewLabel" for="awf_field-53468419">Name: </label>
<div class="af-textWrap">
<input id="awf_field-53468419" type="text" name="name" class="text" value="" tabindex="500" />
</div>
<div class="af-clear"></div></div>
<div class="af-element">
<label class="previewLabel" for="awf_field-53468420">Email: </label>
<div class="af-textWrap"><input class="text" id="awf_field-53468420" type="text" name="email" value="" tabindex="501" />
</div><div class="af-clear"></div>
</div>
<div class="af-element">
<label class="previewLabel" for="awf_field-53468421">passcode</label>
<div class="af-textWrap">
<input type="text" id="awf_field-53468421" class="text" name="custom passcode" value='' tabindex="502" /></div>
<div class="af-clear"></div></div><div class="af-element">
<label class="previewLabel" for="awf_field-53468422">option</label>
<div class="af-textWrap"><input type="text" id="awf_field-53468422" class="text" name="custom option" value='' tabindex="503" /></div>
<div class="af-clear"></div></div><div class="af-element buttonContainer">
<input name="submit" class="submit" type="submit" value="Submit" tabindex="504" />
<div class="af-clear"></div>
</div>
</div>
</div>
<div style="display: none;"><img src="http://forms.aweber.com/form/displays.htm?id=7BxsbMxsbByM" alt="" /></div>
</form>
<script type="text/javascript">
<!--
(function() {
var IE = /*@cc_on!@*/false;
if (!IE) { return; }
if (document.compatMode && document.compatMode == 'BackCompat') {
if (document.getElementById("af-form-786636681")) {
document.getElementById("af-form-786636681").className = 'af-form af-quirksMode';
}
if (document.getElementById("af-body-786636681")) {
document.getElementById("af-body-786636681").className = "af-body inline af-quirksMode";
}
if (document.getElementById("af-header-786636681")) {
document.getElementById("af-header-786636681").className = "af-header af-quirksMode";
}
if (document.getElementById("af-footer-786636681")) {
document.getElementById("af-footer-786636681").className = "af-footer af-quirksMode";
}
}
})();
-->
</script>
这是我找到表单变量的解决方案
<!-- Aweber Decoder by Chris Brown (http://www.cristofayre.com) -->
<!-- Place RAW HTML below this comment-->
<!-- Place RAW HTML above this comment-->
<script language="javascript">
var o,a,st,t,x;
t=document.body.innerHTML; // put innerHTML into var t
st=t.indexOf('id='); // find the start of redirect as 'id='
x=t.substr(st,t.length); // cut off start ot t at this point, and move into x
x=x.replace(/id="/,''); // remove the 'id="' at start of string
st=x.indexOf('"'); // find the next '"' in string
t=x.substr(0,st); // cut x from 0 to index found above
var c = document.getElementsByTagName('input'); // finds all the <input tags
for (var i = 0; i < c.length; i++) { // loop through all inputs
a=c[i].value; // find the value of that input
o+='<tr><td>'+c[i].name+'</td>'; // write the name of that input to table cell
if(c[i].name == 'redirect'){ // if input name is 'redirect'
o+='<td>'+t+'</td></tr>'; // add var t to cell instead
continue; // jump to next loop
}
if (a !=''){ // if the input value is not empty ...
o+='<td>'+c[i].value+'</td></tr>'; // put the value in table cell and end row
}
else{ // but if the value is empty
o+='<td>-</td></tr>'; // put a '-' in the table cell
}
}
document.write('<hr><table width="500px" cellpadding="5" cellspacing="0" border="1" align="center">'+o+'</table>'); // write out the table and cell data
</script>
在编程术语中它可能是“原始的”,但我更喜欢“逻辑”工作,所以我可以看到每个阶段发生的事情而不是使用cyptic代码速记...因为我无法掌握上面的“匹配”证明!
答案 0 :(得分:1)
看起来像一个拼写错误:getElementByTagName()应该是getElementsByTagName()
(复数)并返回一个数组。