这个php生成的javascript有什么问题


What is the problem with this php generated javascript?

在主机上,php 生成 javascript,丢弃以下错误:失踪;语句之前

生成的代码是:

try{
   obj = document.getElementById('subcat');
    
    }catch(e){}
try{
    obj.innerHTML = "<select name='"sub_ad_category_id'">   
                          <option value='"'">-</option>
                          <option value='"5'">bootle</option>
                          <option value='"3'">Puzzle</option>
                     </select>";
     }catch(e){}

它由操作生成.php使用以下代码:

if($var_type=='array') $text = '<select name="+ads_data[sub_ad_category_id]+">';
    else  $text = '<select name="sub_ad_category_id">';
    $text .=   '<option value="">-</option>';
           $res = $ads->get_ads_categories($_SESSION['lang'],$parent_id);
            while($r = mysql_fetch_array($res)){
                $text .= '<option value="'.$r['ad_category_id'].'">'.$r['category_name'].'</option>';
            }
    $text .= '</select>';
    echo "try{obj = document.getElementById('".$id."');}catch(e){}";
    echo "try{obj.innerHTML = ".$text.";}catch(e){}";

看看这一行...

obj.innerHTML = "<select name="sub_ad_category_id"><option value="">-</option></select>";

。修改(缺少一些+符号,并将值的双引号更改为单''(

obj.innerHTML = "<select name=" + sub_ad_category_id + "><option value=''>-</option></select>";
  • +是简单的串联。
  • ''单引号是将引号完全包含在最终 HTML 中的一种方法;否则,您可以使用斜杠'"'"转义引号。

更新:

鉴于我在上面看到的更改,它看起来像您构建字符串的方式。 构建字符串时不要使用 Enter 键。 像这样尝试...

var html = "<select name='"sub_ad_category_id'">";
html += "<option value='"'">-</option>";
html += "<option value='"5'">bootle</option>";
html += "<option value='"3'">Puzzle</option>";
html += "</select>";
ob.innerHTML = html;

。或。。。

ob.innerHTML = "<select name='"sub_ad_category_id'"><option value='"'">-</option><option value='"5'">bootle</option><option value='"3'">Puzzle</option></select>";

看这个 jsFiddle