2015-06-17 79 views
1

如下因素代碼應該給我選擇的ID結果的javascript函數:PHP在不工作

<form id="<?= $blog_id ?>" method="post" action="show.php"> 
    <input type="hidden" name="blog_id" value="<?= $blog_id ?>"> 
    <input type="hidden" name="blog_title" value="<?= $blog_title ?>"> 
    <input type="hidden" name="blog_date" value="<?= $blog_date ?>"> 
    <input type="hidden" name="blog_content" value="<?= $blog_content ?>"> 

    Click <a href="#" onclick="document.getElementById('<?= $blog_id ?>').submit();">here</a> to see (<?= count($blog_comments) ?>) comments. 
</form> 

但是,當我點擊鏈接,它什麼都不做(不使我show.php) 。
但是,如果我將onclick="document.getElementById('<?= $blog_id ?>')更改爲onclick="document.getElementById('test')(也是其他ID)。
它引導我show.php,但顯示我最高的ID。
爲什麼我需要將id作爲變量?因爲它在一個循環中,當我點擊鏈接時,我想從選定的ID中獲取正確的信息。

我看着我的控制檯(檢查元素),和它說:

Uncaught TypeError: document.getElementById(...).submit is not a function 

但是我不知道如何解決這個問題。

+0

而不是使用內聯JS的,你能不能綁定事件處理程序動態?例如。使用'obj.addEventListener()'。 – Terry

+0

基於javascript,我很缺乏經驗,你可以告訴更多關於obj.addEventListener() – Mitch

+0

嘗試使用「」而不是「'點擊here看到(<?= count($ blog_comments)?>)評論。 –

回答

2

IMO是不設置形式的ID到NUMER好主意:

第一標準:

ID和名稱標記必須以字母開頭([A-ZA-Z]),並且可以 後跟任意數量的字母,數字([0-9]),連字符(「 - 」), 下劃線(「_」),冒號(「:」)和句點(「。」)。

但是,也許在你的情況是代碼中重複ID的問題。也許你有更多的這個ID的元素?

試試這個:

<form id="form_<?= $blog_id ?>" method="post" action="show.php"> 
     <input type="hidden" name="blog_id" value="<?= $blog_id ?>"> 
     <input type="hidden" name="blog_title" value="<?= $blog_title ?>"> 
     <input type="hidden" name="blog_date" value="<?= $blog_date ?>"> 
     <input type="hidden" name="blog_content" value="<?= $blog_content ?>"> 

     Click <a href="#" onclick="document.getElementById('form_<?= $blog_id ?>').submit();">here</a> to see (<?= count($blog_comments) ?>) comments. 
    </form> 
+1

這些是HTML4的標準。 HTML5現在更加寬容,並允許您設置純數字ID,即使我同意這不是一個好主意。 – walther

+0

非常感謝!這是工作 :) – Mitch

1

我寫了一個簡單的測試,它這個作品

也許ryrysz是正確的。

test.php的

<?php for($i=1; $i<11; $i++): ?> 
<?php 
    $blog_id =$i; 
    $blog_title = 'abc'.$i; 
    $blog_date = '11-02-2012'; 
    $blog_content = 'dsfdsfdfsdfsdfs'.$i; 
    $blog_comments[] = ''; 
?> 
<form id="<?= $blog_id ?>" method="post" action="show.php"> 
    <input type="hidden" name="blog_id" value="<?= $blog_id ?>"> 
    <input type="hidden" name="blog_title" value="<?= $blog_title ?>"> 
    <input type="hidden" name="blog_date" value="<?= $blog_date ?>"> 
    <input type="hidden" name="blog_content" value="<?= $blog_content ?>"> 

    Click <a href="#" onclick="document.getElementById('<?= $blog_id ?>').submit();">here</a> to see (<?= count($blog_comments) ?>) comments. 
</form> 
<?php endfor ?> 

show.php

<?php 
print_R($_POST);