0

td要素がjavascriptを介して追加されたときにonclickで正常に実行されるjavascript関数があります。削除ボタンは正常に機能します。しかし、php で要素を作成して削除をクリックすると、次のようになります。

SyntaxError: syntax error
var header = document.getElementById(

カウンターは正常に動作していますが。これは範囲の問題ですか?ここに私のコードがあります:

JS

var labor_count = 0;
var part_count = 0;

function incrementLabor(count) {
    labor_count = parseInt(count);
    console.log(labor_count);
}

HTML/PHP

public function getTableRow()
{
    return '
<tr>
<td>
    <input
        type="text"
        name="work_description[]"
        value="'.$this->description.'">
</td>
<td>
    <input
        class="hours calculate"
        type="text"
        name="hours[]"
        value="'.$this->hours.'"
        onchange="calculate();"
        size="2">
</td>
<td>
    <input
        class="rate calculate"
        type="text"
        name="rate[]"
        value="'.$this->rate.'"
        onchange="calculate();"
        size="2">
</td>
<td>
    <input
        type="button"
        value="Remove"
        onclick="
            (function () {
                var parent = this.parentNode.parentNode; //get the row node
                table.deleteRow(parent.rowIndex); //Delete the row index behind it.
                labor_count--;
                console.log(labor_count);
                if (labor_count === 0) {
                    var header = document.getElementById("labor_header");
                    header.parentNode.removeChild(header);
                })()
            };" >
    </td>
</tr>

';
}

作業関数は次のとおりです。

function removeIt(element) {
        var parent = element.parentNode.parentNode; //get the row node
        var table = parent.parentNode;
        table.deleteRow(parent.rowIndex); //Delete the row index behind it.
        labor_count--;
        console.log(labor_count);
        if (labor_count === 0) {
            var header = document.getElementById("labor_header");
            header.parentNode.removeChild(header);
        }
}
4

2 に答える 2

3

getElementById( の後の引用符は、onclick=" 引用符を閉じています。関数に名前を付けてから、onclick で呼び出すことをお勧めします。

<script>
function removeIt(element) {
    var parent = element.parentNode.parentNode; //get the row node
    table.deleteRow(parent.rowIndex); //Delete the row index behind it.
    labor_count--;
    console.log(labor_count);
    if (labor_count === 0) {
        var header = document.getElementById("labor_header");
        header.parentNode.removeChild(header);
    }
} 
</script>

<input
type="button"
value="Remove"
onclick="removeIt(this)"
>

また、php では、引用符やその他の特殊文字が含まれている場合に備えて、$this->description、$this->hours、および $this->rate の前後に htmlspecialchars() を配置する必要があります。

于 2013-08-20T23:06:13.717 に答える