2014-03-05 27 views
-5
:JavaScript 

function showstuff(content#{g.id}){ 
    document.getElementById(content#{g.id}).style.display="block"; 
    document.getElementById(more#{g.id}).style.display="none"; 
} 
function hidestuff(content#{g.id}){ 
    document.getElementById(content#{g.id}).style.display="none"; 
    document.getElementById(more#{g.id}).style.display="inline"; 
} 

這是我的JavaScript代碼,它爲第一要素content但不顯示/隱藏第二個morejavascript函數只盯着第一要素

這是渲染代碼:

<script> 
      function showstuff(content1){ 
      document.getElementById(content1).style.display="block"; 
      document.getElementById(more1).style.display="none"; 
      } 
      function hidestuff(content1){ 
      document.getElementById(content1).style.display="none"; 
      document.getElementById(more1).style.display="inline"; 
      } 
</script> 

<div id="1"> 
    <h3>title</h3> 
    <p> 
    text 
    </p> 
    <a style="display:inline;" onclick="showstuff('content1')" id="more1">Read More</a> 
    <div style="display: none;" id="content1"> 
    <p> content </p> 
    <a onclick="hidestuff('content1')">Show Less</a> 
    </div> 
</div> 
+2

模板系統是什麼,選擇器代表什麼是那些ID,並且你是否多次使用相同的ID等?這對我來說是完全不可讀的! – adeneo

+2

該死的,請提供呈現的HTML標記,而不是爲teletoobies完成的這個無法讀取的代碼 –

+2

我沒有使用'haml',但它看起來像那些元素使用類,而不是ID? – Anton

回答

1

比方說,#{g.id}1值。其結果是,你得到生成的JavaScript代碼,看起來像這樣:

function showstuff(content1){ 
    document.getElementById(content1).style.display="block"; 
    document.getElementById(more1).style.display="none"; 
} 
function hidestuff(content1){ 
    document.getElementById(content1).style.display="none"; 
    document.getElementById(more1).style.display="inline"; 
} 

所以,當你調用showstuff('something')函數體裏面,有一個名爲content1'something'價值變量。這被傳遞到第一行代碼罰款,並正確選擇一個元素。雖然你有其他地方定義的more1變量嗎?我對此表示懷疑,因此沒有要選擇的元素,因此沒有任何要更改的style.display屬性。

也許你的意思做更多的東西是這樣的:

function showstuff(id) { 
    document.getElementById('content' + id).style.display="block"; 
    document.getElementById('more' + id).style.display="none"; 
} 

然後,你把它像這樣:

showstuff(#{g.id}); 

,它會顯示/隱藏與標識content1more1元素。

+0

我用我使用的haml代碼更新了我的問題 –

+0

@CarlaDessi那麼,您的HTML生成代碼只是讓我更加確信我發佈的內容是正確的。嘗試改變我的建議,然後修改這個功能:':onclick =>「showstuff('content#{g.id}')」'to':onclick =>「showstuff(#{g.id} )''' –

+0

@CarlaDessi實質上,當**調用函數時,而不是在聲明它時,您希望從您的(我假設服務器端)代碼傳遞動態值。 –