2013-11-29 20 views
1

我想創建用於檢查HTML空元素的函數。用於檢查HTML空元素的函數

Javascript代碼:

var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg; 
    function getParamNames(params, formName, errorMSG) { 
    if(result!="" && formName!=""){ 
     var fnStr = params.toString().replace(STRIP_COMMENTS, ''); 
     var result = fnStr.slice(fnStr.indexOf('(')+1, fnStr.indexOf(')')).match(/([^\s,]+)/g).toString(); 
     alert(document.frm.result.value); 
     return false; 
    } 
    else{ 
     alert("Параметры функции не были заданы в JavaScript. Пожалуйста обратитесь к программистам."); 
     return false; 
    } 
    } 

HTML代碼:

<form name='frm' method='post' action='' onSubmit="getParamNames(function(ggg){}, 'frm', 'Хамаи катакчахо бояд пур карда шавад');"> 
    <input type="text" name="ggg" /> 
    <input type="submit" value="ssdfsdfdf" /> 
</form> 

,我得到這個錯誤: 類型錯誤:document.frm.result未定義

alert(document.frm.result.value); 
+0

元素是空的,如果它沒有子節點。你可以用DOM來做到這一點,不需要正則表達式。 – elclanrs

+0

@elclanrs我怎麼用DOM做到這一點? – Abdukhafiz

+0

該消息是可怕的:「JavaScript中的JavaScript代碼不可用。」。投訴說明!它甚至比Excel通知還要糟糕。修復代碼後,請再試一次,看看客戶的樣子吧! –

回答

3

我只會使用dom參考來做到這一點。

Live demo here (click).

//get a reference to all elements 
var allElems = document.body.getElementsByTagName("*"); 

var emptyElems = []; //store empty elements here 
for (var i=0; i<allElems.length; ++i) { //check each element for text or children 
    if (!allElems[i].textContent && !allElems[i].hasChildNodes()) { 
    emptyElems.push(allElems[i]); //add empty elements to array 
    } 
} 

console.log(emptyElems);