我正在使用 jquery 向表单添加字段,使用“添加更多”按钮的“可重复”字段
代码是
$(".add-attacker-scores").click(function() {
count = count + 1;
$('#atacker_score_items').append('<li><span class="sort hndle"><label>team :<input type="text" name="attacker_scores[' + count + '][team]" size="30" value=""/></label><label>flags :<input type="text" name="attacker_scores[' + count + '][flags]" size="10" value=""/></label><label>phone homes :<input type="text" name="attacker_scores[' + count + '][phone]" size="10" value=""/></label><label>Injects :<input type="text" name="attacker_scores[' + count + '][injects]" size="10" value=""/></label><span class="remove">Remove</span></li>');
var temp = <? echo implode('',explode("\n",Print_attacker_scores('count') )); ?>;
temp = temp.replace(/count/g, count);
$('#atacker_score_items').append(temp);
return false;
});
Print_attacker_scores 的代码是
function Print_attacker_scores($cnt, $p = null) {
if ($p === null){
$a = $b = $c = $d = '';
}else{
$a = $p['team'];
$b = $p['flags'];
$c = $p['phone'];
$d = $p['injects'];
}
return <<<HTML
<li><span class="sort hndle"></span>
<label>team :
<input type="text" name="attacker_scores[$cnt][team]" size="30" value="$a"/>
</label>
<label>flags :
<input type="text" name="attacker_scores[$cnt][flags]" size="10" value="$b"/></label>
<label>phone homes :
<input type="text" name="attacker_scores[$cnt][phone]" size="10" value="$c"/></label>
<label>injects :
<input type="text" name="attacker_scores[$cnt][injects]" size="10" value="$d"/></label>
<span class="remove">Remove</span>
</li>
HTML
;
}
在 Firefox 中它可以工作,但在 chrome 中它不起作用。
然后我意识到它抛出了一个错误: NS_ERROR_XPC_BAD_CONVERT_JS: Could not convert JavaScript argument arg 0 [nsIDOMDocumentFragment.appendChild]
为什么会这样?我已经从网上复制了代码,但我可以修复它,因为我不明白这些行:
var temp = <? echo implode('',explode("\n",Print_attacker_scores('count') )); ?>;
temp = temp.replace(/count/g, count);
所以这是读取由 Print_scores_function 生成的 html 并为每一行创建一个数组。然后生成一个包含数组中所有项目的字符串。然后替换计数¿?我不明白它为什么这样做。也许还有另一种更简单的方法?
(/count/g, count) 是正则表达式吗?
我究竟做错了什么?