2013-05-30 33 views
0

我得到了一個HTML表格,看起來像這樣:PhpQuery問題與VAL()改變值

<table id="xp">    
     <tbody > 
      <tr> 
       <td> 
       <input type="text" data-type="string" value="testvalue" class="text"> 
       </td> 
       <td> 
       <input type="text" data-type="string" value="" class="text"> 
       </td> 
      </tr> 

     </tbody> 
</table> 

現在我想用phpQuery改變輸入的值,像這樣:

require('**********/phpQuery.php'); 
$newsURL = "http://***********/index.php"; 
$newspage = file_get_contents($newsURL); 

    if($newspage) 
    {   
     $pq = phpQuery::newDocument($newspage); 
       foreach(pq('.text') as $stuffs) 
       { 
        $stuffs->val('ompalompa'); 
        $this->assertEquals("ompalompa", $stuffs->val()); 
     } 
      } 

上午我使用PHPUnit的斷言看到的結果,但我剛剛得到這個錯誤:當我使用VAL()方法來獲得

//Call to undefined method DOMElement::val() 

的值從所述第一類元件壽這樣的:

$stuffs = pq('.text')->val(); 
$this->assertEquals("testvalue", $stuffs); 

它工作正常和所述斷言被傳遞

Time: 8 seconds, Memory: 3.25Mb 
OK (1 test, 1 assertion) 

正如我沒有參數被緊接在讀取的從phpQuery手冊VAL()理解對於具有選擇選擇器的第一個元素的值和具有值的val()將使用選定的選擇器設置每個元素的值,如下所示。任何人都可以向我解釋,如果我誤解了文檔或者代碼中的其他內容被破壞,問題是什麼。

  • val()獲取第一個匹配元素的value屬性的內容。
  • val($ val)設置每個匹配元素的值屬性。
+0

不是我不THIK如此,$ PQ varialble和PQ方法是不一樣的,在$ PQ變量只是存儲它可以被命名爲任何文件,可能將其命名爲$ pq有點混亂。 – user1593846

+0

Okey所以這是foreach的一些問題,因爲我可以用id來更改1項的值,所以它必須是一個問題,如何在foreach中返回對象,有什麼想法? – user1593846

+0

剛剛打印出foreach後的$ stuffs結果,這是結果http://pastebin.com/qr7C73s0 – user1593846

回答

1

docs for phpQuery中,它指出,當您循環訪問foreach時,會返回一個php DOM。這必須傳回給使用pq()的phpQuery。

變化$stuffspq($stuffs)

出於好奇,所有出現我沒有,因爲我從來沒有使用過phpQuery如下:

<? 
require 'phpQuery-onefile.php'; 
$html = "<table id=\"xp\">    
     <tbody > 
      <tr> 
       <td> 
       <input type=\"text\" data-type=\"string\" value=\"testvalue\" class=\"text\"> 
       </td> 
       <td> 
       <input type=\"text\" data-type=\"string\" value=\"\" class=\"text\"> 
       </td> 
      </tr> 

     </tbody> 
</table>"; 

$pq = phpQuery::newDocument($html); 
foreach(pq('.text') as $stuffs) 
{ 
    pq($stuffs)->val('ompalompa'); 
    echo pq($stuffs)->val()."</br>"; 
} 

?> 

產量爲:

ompalompa 
ompalompa 

如果我使用:

$stuffs->val('ompalompa'); 

然後

Fatal error: Call to undefined method DOMElement::val() in /var/www/index.php on line 20 
+0

感謝您的迴應,「;」剛從這裏的例子中錯過了,在複製過程中錯過了它。和phpQuery :: selectDocument($ pq);沒有工作我仍然遇到同樣的問題。我沒有id的原因是因爲我沒有寫html,並沒有直接訪問它。我瀏覽了jquery文檔,並從中發佈了我在這裏發佈的代碼,但我找不到任何問題。 – user1593846

+0

@ user1593846你試過編輯了嗎? –

+0

你是什麼意思編輯? – user1593846