2017-04-21 14 views
0

我想要做什麼,當用戶輸入一個匹配兩個變量之一的值時,我想輸入的值然後'觸發'該變量。所以基本上,您在提示中輸入變量的名稱,然後我想要一個段落標記來獲取變量所保存的文本。用戶輸入值到變量爲文本

但是我不能讓它工作,因爲輸入的值變成了文本,根本不觸發變量。它只是轉換成純文本。

我希望我提供的代碼清除了我試圖實現的其餘部分!

var help = 'Put me in the paragraph tag please!' 
 
    var no = 'Or me, either way it\'s fine!' 
 

 

 
    $('.reset').on('click', function() { 
 
    $('p').text(''); 
 
    }); 
 

 
    $('.go').on('click', function() { 
 
\t var key = prompt('Enter something bro').toLowerCase(); 
 
    
 
    $('p').text(key); 
 

 

 
    });
button { 
 
    transition:color .3s; 
 
    border:none; 
 
    font-size:18px; 
 
    color:white; 
 
    padding:1%; 
 
    width:100px; 
 
    cursor:pointer; 
 
} 
 

 
button:hover { 
 
    color:rgba(0,0,0,.7) 
 
} 
 

 
.go { 
 
    background-color:#4CAF50; 
 
} 
 

 
.reset { 
 
    background-color:#f44336; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="reset">Reset</button> 
 

 
<button class="go">Go</button> 
 

 
<p>Replace me</p>

+0

可能是'window [key](arguments)'? JavaScript也有'eval()',但是由於安全原因,沒有人真正推薦它。例如,如果你有'功能一(文本){警報(文本); }'在腳本的根目錄下,這應該按預期工作:'var funcName =「one」;窗口[funcName](「你好」);' –

回答

0

使用窗口全球輸出價值

var help = 'Put me in the paragraph tag please!' 
 
    var no = 'Or me, either way it\'s fine!' 
 

 

 
    $('.reset').on('click', function() { 
 
    $('p').text(''); 
 
    }); 
 

 
    $('.go').on('click', function() { 
 
\t var key = prompt('Enter something bro').toLowerCase(); 
 
    
 
    $('p').text(window[key]); 
 

 

 
    });
button { 
 
    transition:color .3s; 
 
    border:none; 
 
    font-size:18px; 
 
    color:white; 
 
    padding:1%; 
 
    width:100px; 
 
    cursor:pointer; 
 
} 
 

 
button:hover { 
 
    color:rgba(0,0,0,.7) 
 
} 
 

 
.go { 
 
    background-color:#4CAF50; 
 
} 
 

 
.reset { 
 
    background-color:#f44336; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="reset">Reset</button> 
 

 
<button class="go">Go</button> 
 

 
<p>Replace me</p>

0

使用window[key]

var help = 'Put me in the paragraph tag please!' 
 
     var no = 'Or me, either way it\'s fine!' 
 

 

 
     $('.reset').on('click', function() { 
 
     $('p').text(''); 
 
     }); 
 

 
     $('.go').on('click', function() { 
 
    \t var key = prompt('Enter something bro').toLowerCase(); 
 
    if(window[key] != undefined) 
 
       alert(window[key]); 
 
      $('p').text(window[key]); 
 
     });
button { 
 
     transition:color .3s; 
 
     border:none; 
 
     font-size:18px; 
 
     color:white; 
 
     padding:1%; 
 
     width:100px; 
 
     cursor:pointer; 
 
    } 
 

 
    button:hover { 
 
     color:rgba(0,0,0,.7) 
 
    } 
 

 
    .go { 
 
     background-color:#4CAF50; 
 
    } 
 

 
    .reset { 
 
     background-color:#f44336; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
    <button class="reset">Reset</button> 
 

 
    <button class="go">Go</button> 
 

 
    <p>Replace me</p>

+0

你意識到答案是我的答案的重複? – madalinivascu

+0

我意識到我已經點擊了帖子後的答案 –

+0

我不知道他是否需要這個,我的代碼顯示的文本除了只顯示可變的文本外:) –

2

var decision={ 
 
    help : 'Put me in the paragraph tag please!', 
 
    no : 'Or me, either way it\'s fine!' 
 
    } 
 

 

 
    $('.reset').on('click', function() { 
 
    $('p').text(''); 
 
    }); 
 

 
    $('.go').on('click', function() { 
 
\t var key = prompt('Enter something bro').toLowerCase(); 
 
    
 
    $('p').text(decision[key]); 
 

 

 
    });
button { 
 
    transition:color .3s; 
 
    border:none; 
 
    font-size:18px; 
 
    color:white; 
 
    padding:1%; 
 
    width:100px; 
 
    cursor:pointer; 
 
} 
 

 
button:hover { 
 
    color:rgba(0,0,0,.7) 
 
} 
 

 
.go { 
 
    background-color:#4CAF50; 
 
} 
 

 
.reset { 
 
    background-color:#f44336; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="reset">Reset</button> 
 

 
<button class="go">Go</button> 
 

 
<p>Replace me</p>

這裏是你的問題的簡單解決方案。將選項存儲爲變量而不是對象。您可以使用對象鍵獲取選項的值。或直接獲取對象的屬性。有關詳情請參閱Objects and Properties

0

<script> 
 
$(document).ready(function(){ 
 
var help = 'Put me in the paragraph tag please!' 
 
    var no = 'Or me, either way it\'s fine!' 
 

 
    $('.reset').on('click', function() { 
 
    
 
    $('p').text(''); 
 
    }); 
 

 
    $('.go').on('click', function() { 
 
\t var key = prompt('Enter something bro').toLowerCase(); 
 
    
 
    $('p').text(key); 
 

 
    }); 
 
}); 
 
    </script>

必須使用的document.ready函數來執行jQuery代碼..

+0

無論你寫的代碼是100%正確的只是使用$(document) 。就緒(函數(){});在你的代碼中,正如我在答案中所做的那樣。 –

+0

雖然這解決了問題的一部分,即在事件準備好後將事件附加到DOM,但它不能解決OP的問題,即在字符串中引用具有名稱的函數並運行它, –

0

使用window[key]使用文本輸入到可變

var help = 'Put me in the paragraph tag please!' 
 
    var no = 'Or me, either way it\'s fine!' 
 

 

 
    $('.reset').on('click', function() { 
 
    $('p').text(''); 
 
    }); 
 

 
    $('.go').on('click', function() { 
 
\t var key = prompt('Enter something bro').toLowerCase(); 
 
    var name = window[key]; 
 
    $('p').text(name); 
 

 

 
    });
button { 
 
    transition:color .3s; 
 
    border:none; 
 
    font-size:18px; 
 
    color:white; 
 
    padding:1%; 
 
    width:100px; 
 
    cursor:pointer; 
 
} 
 

 
button:hover { 
 
    color:rgba(0,0,0,.7) 
 
} 
 

 
.go { 
 
    background-color:#4CAF50; 
 
} 
 

 
.reset { 
 
    background-color:#f44336; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="reset">Reset</button> 
 

 
<button class="go">Go</button> 
 

 
<p>Replace me</p>
比較